FPGA結課論文_第1頁
FPGA結課論文_第2頁
FPGA結課論文_第3頁
FPGA結課論文_第4頁
FPGA結課論文_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、FPGA結課論文學院:信息工程學院 專業:電子信息工程 班級:10級2班 姓名:王君 學號:1067118241前言隨著電子技術的發展,人們的生活水平和質量不斷提高,生活設備的智能化程度也越來越高,這些都離不開電子產品的進步。現代電子產品在性能提高、復雜度增大的同時,價格卻一直呈下降趨勢,而且產品更新換代的步伐也越來越快,實現這種進步的主要因素是生產制造技術和電子設計技術的發展。前者以微細加工技術為代表,目前已進展到深亞微米階段,可以在幾平方厘米的芯片上集成數千萬個晶體管。后者的核心就是EDA技術,EDA是指以計算機為工作平臺,融合應用電子技術、計算機技術、智能化技術最新成果而研制成的電子CA

2、D通用軟件包,主要能輔助進行三方面的設計工作:IC設計,電子電路設計,PCB設計。本次設計是基于FPGA/CPLD數控脈沖寬度調制信號發生器實現,該系統主要模塊有:時鐘產生電路模塊、JTAG編程連接模塊、電源電路模塊,通過連線將各個模塊進行連接成最小系統,系統精簡,實現方便且功能強大,比起傳統的信號發生器有著比較明顯的優勢。本設計立足系統可靠性及穩定性等高技術要求,采用FPGA芯片實現數控脈沖寬度調制信號發生器的FPGA/CPLD設計,其電路設計比較簡單,外圍電路少,易于控制和檢查,較傳統的分離元件實現方式有著明顯的優勢,尤其是其設計電路實現周期,其抗干擾及調試過程都很簡單。FPGA介紹FPG

3、A(FieldProgrammable Gate Array)可以達到比PLD更高的集成度,它是在PAL、GAL、EPLD等可編程器件的基礎上進一步發展起來的,具有更復雜的布線結構和邏輯實現。PLD器件和FPGA的主要區別在于PLD是通過修改具有固定內連電路得邏輯功能來進行編程,而FPGA是通過修改一根或多根分割宏單元的基本功能塊的內連線的布線來進行編程。它一般由可嵌入式陣列塊(EAB)、邏輯陣列塊(LAB)、快速互聯通道(Fast Track)、IO單元(IOE)組成。Altera Cyclone II 采用全銅層、低K值、1.2伏SRAM工藝設計,裸片尺寸被盡可能最小的優化。采用300毫米

4、晶圓,以TSMC成功的90nm工藝技術為基礎,Cyclone II 器件提供了4,608到68,416個邏輯單元(LE),并具有一整套最佳的功能,包括嵌入式18比特x18比特乘法器、專用外部存儲器接口電路、4kbit嵌入式存儲器塊、鎖相環(PLL)和高速差分I/O能力。Cyclone II 器件擴展了FPGA在成本敏感性、大批量應用領域的影響力,延續了第一代Cyclone器件系列的成功。由于FPGA是基于查找表(LUT)結構的器件,且每個LAB由10個LE組成,一個LE由LUT和寄存器組成,適合于時序邏輯電路的設計。1 設計內容設計一個能夠均勻輸出給定占空比的脈沖寬調制信號,通過兩個可加載8位

5、計數器lcnt8.v實現本設計。若初始時D觸發器輸出為高電平時, U1不能加載A,若已復位只能完成0到255的加計數,在計到255時產生輸出cao1,經反相后異步清除d觸發器,經反相后,ld1變高,使u1完成加載A,但只能保持加載狀態,直到u2計數完成,產生cao2使d觸發器輸出高電平,ld1變低,u1開始從A的加計數,計到255后,產生輸出cao1,經反相后異步清除d觸發器,如此循環。D觸發器輸出高電平使u2加載,但持續的高電平維持加載使u2計數狀態維持在B,只有當d觸發器清除后,u2開始從B的加計數,計到255后產生輸出cao2,使D觸發器輸出為高電平,如此循環。此設計選用的是8位的計數器

6、進行加計數功能,從0加到255。計數器是數字系統中用的較多的基本邏輯器件,它的基本功能是統計時鐘脈沖的個數,即實現計數操作,它也可用與分頻、定時、產生節拍脈沖和脈沖序列等。例如,計算機中的時序發生器、分頻器、指令計數器等都要使用計數器。計數器的種類很多。按構成計數器中的各觸發器是否使用一個時鐘脈沖源來分,可分為同步計數器和異步計數器;按進位體制的不同,可分為二進制計數器、十進制計數器和任意進制計數器;按計數過程中數字增減趨勢的不同,可分為加法計數器、減法計數器和可逆計數器;還有可預制數和可編計數器等等。程序:A、代碼頂層:模塊pwm_gn.v/PWM generatormodule d(clk

7、,rst_n,a,b,pwmout,ld1,ld2,cao1,cao2,pwmint);/pwm_gn input clk; /system clock input rst_n; /reset input 7:0 a; /pulse width control input input 7:0 b; /pulse width control input inout reg ld1; inout reg ld2; output pwmout; output cao1,cao2; /only for observation, can be removed wire cao1; wire cao2;r

8、eg pwmout; inout pwmint; reg pwmint;/intantiate two loadable 0255 counter lcnt_8 u1_lcnt8( .clk(clk), .rst_n(rst_n), .ld(ld1), .d(a), .cao(cao1); lcnt_8 u2_lcnt8( .clk(clk), .rst_n(rst_n), .ld(ld2), .d(b), .cao(cao2);/two loadable counter control and reloading controlalways(posedge cao2 or posedge c

9、ao1) begin if (cao1=1b1) begin pwmint=1b0; end else if (cao2=1) begin pwmint=1b1; end ld1=!pwmint; ld2=pwmint; pwmout=pwmint; endendmoduleB、8位可加載計數器:lcnt8/8bit loadble increment countermodule lcnt8(clk,rst_n,ld,d,cao); input clk; input ld; input 7:0 d; input rst_n; output cao; reg 7:0 count; reg cao

10、; always(posedge clk ) begin if (!rst_n) begin count=8b00000000; end else if (ld) begin count=d; end else begin count=count+1b1; end end always(posedge clk) begin if (count=254) begin cao=1b1; end else begin cao=1b0; end endendmodulec語言程序:#include #define uchar unsigned char #define uint unsigned in

11、t sbit KEY1 = P34;sbit KEY2 = P35;sbit KEY3 = P36;sbit IN1 = P10;sbit IN2 = P11;sbit ENA = P12;sfr ldata=0x80;sbit dula=P26;sbit wela=P27;/sbit lcden=P34;/uchar timer,ms,t_set = 1;uchar T_N=100;uchar T_N1=100;uchar T_H_N=50;uchar T_H_N1=50;void msplay(uchar,uchar);uchar code x1=0x3f,0x06,0x5b,0x4f,0

12、x66,0x6d,0x7d,0x27,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/uchar code x2=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;uchar codex3=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/uchar codex4=0x01,0x02,0x04,0x08,0x10,0x20;void delay(uint z)/延時函數uint x;for(x=z;x0;x-);void Key_Scan(

13、)if(KEY1 = 0)delay(20);while(!KEY1);T_H_N+;if(T_H_N =99)T_H_N =99;if(KEY2 = 0)delay(20);while(!KEY2);T_H_N-;if(T_H_N = 1)T_H_N = 1;if(KEY3 = 0)delay(15);while(!KEY3);IN1=IN1;IN2=IN2;void Motor_Init()ENA = 0;IN1 = 1;IN2 = 0;void Timer0_Init()TMOD=0X12;TH0=(256-50);TL0=(256-50);/TH1=(65535-T_H)/256;/T

14、L1=(65535-T_H)%256;EA=1;ET0=1;TR0=1;void main()uchar k3,k2,k1,k0;Timer0_Init();Motor_Init();while(1)k2=T_H_N/10;k3=T_H_N%10;k1=0;k0=0;msplay(k0,2);msplay(k1,3); msplay(k2,4);msplay(k3,5);Key_Scan();void timer0() interrupt 1TR0=0;/TH0=(65536-50)/256;/TL0=(65536-50)%256; T_H_N1-;if(0=T_H_N1)ENA=0;T_H_

15、N1=1;T_N1-;if(T_N1=0)ENA=1;T_N1=100;T_H_N1=T_H_N;TR0=1;void msplay(uchar y1,uchar y2) ldata = x1y1;dula=1;dula=0; delay(1); ldata = x3y2;wela=1;wela=0; delay(1); ldata = 0x00;dula=1;dula=0; delay(1); ldata = 0x0ff;wela=1;wela=0; delay(1); 2 仿真結果A=12,B=12的輸出波形A=136,B=128的輸出波形3 總結本設計采用EDA技術,通過FPGA芯片實現

16、了數控脈沖寬度調制信號發生器的設計,本文采用Verilog 硬件描述語言來說明電路,完成對電路的功能仿真。通過D觸發器及兩個可加載8位計數器lcnt8.v實現本設計。與傳統的設計方式相比,本設計由于采用了FPGA芯片來實現,它將大量的電路功能集成到一個芯片中,并且可以由用戶自行設計邏輯功能,提高了系統的集成度和可靠性。硬件描述語言HDL是相對于一般的計算機軟件語言,如:C、PASCAL而言的。HDL語言使用與設計硬件電子系統的計算機語言,它能描述電子系統的邏輯功能、電路結構和連接方式。設計者可利用HDL程序來描述所希望的電路系統,規定器件結構特征和電路的行為方式;然后利用綜合器和適配器將此程序編程能控制FPGA和CPLD內部結構,并實現相應邏輯功能的的門級或更底層的結構網表文件或下載文件。目前,就FPGA/CPLD開發來說,比較常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。 在本次設計中,我們完成本系統設計的要求及功能。在設計開始前我們對各個模塊進行了詳細的分析和設計準備工作,設計過程中,我們相互協調,積極參與完成各個技術實現的難點。通過本次設計,我們在對EDA這門技術上有了更深刻的認識,也從實踐的例子中去感受到了E

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論