EDA作品設計報告.分析_第1頁
EDA作品設計報告.分析_第2頁
EDA作品設計報告.分析_第3頁
已閱讀5頁,還剩9頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

EDA技術設計報告題目:(作品名稱)學院:光電與信息工程學院專業:電子信息工程年級:2013級學姓號:名:20159月一、 作品介紹(描寫:作品功能、應用場合、使用說明等)作品功能:可在開發板上以顯示分鐘——秒的形式顯示,每隔1s鐘,秒鐘加一,當秒鐘數達到60式,分鐘數自動加一,秒鐘數變為00,故秒鐘數最大只會顯示59,當分鐘數達到60時,分00,59,1h,S1應用場合:(<1h時間的計時、考試等等。使用說明:計時器能顯示1s的時間,故提供給計時器內部定時的時鐘脈沖頻率應大于10Hz。計時器計時長度為36004LED3600~001。清0,并作好清0準備。復位開關可以在任何情況下使用,在計時過程中,只要按一下復位開關,計時進程就終止,并對計時器清零。二、 硬件設計(描寫:硬件總框圖,工作原理,工作過程等)硬件總框圖:USBUSBBLASTERUSBDEVICEUSBHOSTFT245ISP1362EP2C35MAX3128EPCS16SDRAMSRAMFLASHFLASHHEX7HEX6HEX5HEX4HEX7HEX6HEX7HEX6SW1SW0-1-時鐘基準時鐘時鐘基準時鐘動態顯示譯碼顯示復位計數器工作原理:本設計可分為六個主要模塊:鍵輸入消抖模塊時鐘分頻電路模塊控制電路模塊計時電路模塊存儲器模塊動態掃描譯碼顯示模塊各個輸入/輸出端口的作用如下:CLK為復位信號。SW0為終端按鍵,按下此按鍵可停止計數SW1為復位鍵,用于復位以及從觀看記錄模式切換回計時模式用。led0,led1,led2,led3,led4,led5,led6,led7消抖模塊秒表面板上有2個按鍵:復位)啟停)5-10ms。抖動會引起被誤讀多次。為確保FPGA對鍵的閉合僅作一次處理,必須去除按鍵抖動。通常在按鍵較少時可用硬件方法消除抖動,一般采用RS觸發器作為常用的消抖電路,EDARS觸發器進行消抖,也可通過檢測按鍵按下的時間進行消抖。本模塊描述的防抖動電路屬于計數器型防抖動電路。其工作原理是,輸入一個50MHZ的時鐘信號,設置一個模值為4的控制計數器,在人工按鍵KEY=‘0’時,執行加1計數,如連續4次檢測到低電平則JSQ=3,即當JSQ=3時輸出低電平,4次以上檢測到低電平,JSQ依然等于3,也一直輸出低電平,這就確保了當按鍵信號持續低電平6MS以上按鍵信號才有效,抖動期間的低電平持續時間不足以輸出低電平。如沒有連續4次以上檢測到低電平,則JSQ清零。如檢測到高電平,JSQ也清零,這就導致了在抖動期間不可能輸出低電平,唯有在穩定期間才可能輸出低電平,因此防抖動得以實現。-2-因為消抖電路后接的是同步設計的控制模塊控制模塊同步時鐘的長度,因此在輸出電路后,再接入一個20MHZ的CLK2信號,當輸出從1變為0時,在時鐘跳變沿,輸出低電平,在下一個時鐘跳變沿則變為出為1時,則一直輸出會輸出兩個周期CLK2的低電平輸出,以供控制模塊使用。時鐘分頻電路模塊在基于EDA技術的數字電路系統設計中,分頻電路應用十分廣泛。常常使用分頻電輸入頻率輸出頻率)出不是一般計數器的計數結果,而是根據分頻常數對輸出信號的高,低電平控制。本設計需要一個計時范圍為0——3600秒的秒表,首先需要獲得一個比較精確的計時1/100s50MHZ經50萬倍分頻后獲得一個精確的100HZ的脈沖來作為計數器的時鐘信號CLK100hz率采用經2000倍分頻后的10000HZ的脈沖CLK_OUT2,按鍵消抖電路部分需要采用經4萬倍分頻后產生的500HZ的脈沖CLK_OUT3作為檢測信號??刂齐娐纺K讀取控制,控制模塊為同步電路設計,在時鐘上升沿才變化,主控電路的功能:實現系統復位:當SW1鍵按下時,輸出CLR=’0’以及Q=’0’信號,實現計時清零并停止功能,當系統/停控制:當按下K2QQ=’0’時,計數器暫停計時。計數模塊計數器是由基本的計數單元和一些控制門所組成,計數單元則由一系列具有存儲信息功能的各類觸發器構成,這些觸發器有RS觸發器、T觸發器、D觸發器及JK觸發器等。計數器在數字系統中應用廣泛,如在電子計算機的控制器中對指令地址進行計數,以便順序取出LCD或LED屏才能顯示。計數器的種類:如果按照計數器中的觸發器是否同時翻轉分類器兩種。-3-常見的同步計數器有74160系列,74LS190系列,常見的異步計數器有74LS290系列。如果按照技術過程中數字增減分類,又可將計數器分為加法計數器、減法計數器和可逆可逆計數器。一目了然,知道這個計數器到底是什么觸發方式,以便于設計者進行電路的設計。計數器的原理是將幾個觸發器按照一定的順序連接起來定的規律隨時鐘的變化來記憶時鐘的個數VHDL語言來對計數器進行描述了。采用了同步計數器設計以及格雷碼計數器設計,來最大限度的消除毛刺,系統需要3個模10格雷碼計數器以及一個模60.01S位計時器由100HZ脈沖作為輸入時鐘,1S0.1S計時器的時鐘由1S的進位輸4位格雷碼是到15回09回0的,所以要在原有格雷碼的基礎上做些修改,對應的0到9數字。在設計格雷碼計數器的時候可以使用狀態機有64計時電路模塊輸入端有使能端E100HZ時鐘輸入CLCL0.1S位1S位10S位和CO進位端,在10HZ時鐘輸入給0.1S位并在控制模塊輸出Q=’1’時暫停計時,控制端按下清零鍵則止計時并全部清零。動態掃描譯碼顯示模塊一個發光二極管單元多一個小數點顯示。七段數碼管的的基本原理是將所要顯示的數字翻譯成構成該電路中可發光二極管的驅動信號,分別用AB、、D、、、G來表示不同位置的二極管,驅動信號會驅動不同位置的的發光二極管發光來顯示出0到9數字的驅動信號需要特定的譯碼電路。-4-極(COM)的數碼管,在應用時應將公共極COM接到+5V,當某一字段發光二極管的陰極為電COM的數碼管,在應用時應將公共極COM接到地線GND上,當某一字段發光二極管的陽極為高電平時,相應字段就點亮。當某一字段的陽極為低電平時,相應字段就不亮,本次設計使用共陽數碼管。字,因此根據數碼管的驅動方式的不同,可以分為靜態式和動態式兩類。靜態驅動也稱直流驅動。靜態驅動是指每個數碼管的每一個段碼都由一個I/O端口進行驅動,或者使用如BCDI/O5個數碼管靜態顯示則需要5×8=40根I/O端口來驅動,實際應用時必須增加譯碼驅動器進行驅動,增加了硬件電路的復雜性。數碼管動態顯示接口是應用最為廣泛的一種顯示方式之一8個顯示筆劃"a,b,c,d,e,f,g,d,p"的同名端連在一起,另外為每個數碼管的公共極增加位選通控制電路,位選通由各自獨立的I/O線控制,當系統輸出顯示碼時,所有數碼管都接收1~2ms,由于人的視覺暫留現象及I/O端口,而且功功耗更低。在本次設計中將采用七段共陽型數碼管動態顯示電路的來設計。三、 軟件設計(描寫:軟件總框圖,各模塊流程圖并加以詳細說明)程序采用自頂向下分層設計,軟件總框圖如下:存儲器存儲器計時程序動態掃描譯碼程序主控程序按鍵消抖處理程序分頻電路程序八段數碼管按鍵掃描程序CLK50M-5-七段共陽型數碼管譯碼表:各模塊流程圖Led七段共陽型數碼管顯示模塊:流程圖:開始開始定義輸入變量datain定義輸出變量ledout、dataoutledout[OUTWIDTH-1:1]=dataout顯示譯碼結束程序:moduleled(datain,ledout);parameterINWIDTH=4;parameterOUTWIDTH=8;input[INWIDTH-1:0]datain;output[OUTWIDTH-1:0]ledout;reg[OUTWIDTH-2:0]dataout;assignledout[OUTWIDTH-1:1]=dataout;alwaysbegincase(datain)0:dataout<=7'b1000000;1:dataout<=7'b1111001;2:dataout<=7'b0100100;3:dataout<=7'b0110000;4:dataout<=7'b0011001;5:dataout<=7'b0010010;6:dataout<=7'b0000010;7:dataout<=7'b1111000;8:dataout<=7'b0000000;9:dataout<=7'b0010000;10:dataout<=7'b0001000;11:dataout<=7'b0000011;12:dataout<=7'b1000110;13:dataout<=7'b0100001;14:dataout<=7'b0000110;15:dataout<=7'b0001110;-6-default:dataout<=7'b1000000;endcaseendendmodule分析:符。按鍵掃描程序:流程圖開始開始定義計時器的counter位數為8定義使用時鐘信號并賦值為輸入信號的最高位如果輸入信號 clk上升沿到來時Ycounter自加一N如果使用時鐘信號clk_use上升沿到來,即為了消去按鍵抖動YN輸出信號keyout=keyin模塊結束程序:moduleswitch(clk,keyin,keyout);parameterCOUNTWIDTH=8;inputclk,keyin;outputregkeyout;reg[COUNTWIDTH-1:0]counter;wireclk_use; //assignclk_use=counter[COUNTWIDTH-1];always@(posedgeclk)counter<=counter+1'b1;always@(posedgeclk_use)keyout<=keyin;endmodule-7-分析此功能程序包含兩個輸入變量clk、keyin,一個輸出變量keyout,clk供給程序時鐘脈沖,keyin提供程序按鍵的操作實現的功能(實現復位或者暫停),輸出變量keyout實現對提供的輸入信號keyin的處理。本程序較為簡單,主要是用來實現按鍵的消抖:即由counter和clk_use構成的延時實現消抖,當輸入信號clk上升沿(即時鐘信號上升沿到來時),counter自加一,若counter的最高位發生變化時,即發生從0到1的跳變,clk_use會產生一個上升沿的變化,通過時間的延遲從而實現消抖,消抖時間為128*輸入時間脈沖clk的時間??赏ㄟ^程序仿真觀察此模塊實現的功能:當keyin為復位時,即clr=1,led4=led5=led6=led7=1000000(數碼管最低位即小數點位沒用到故只看前7位,查看ledled=10000000當keyin為暫停時,即pause=1,可看到led4、led5、led6、led7保持狀態不變主程序模塊:流程圖:-8-開始開始定義輸入輸出口調用按鍵掃描模塊程序led1=led2=led3=led0=8'b11111111,即低四位數碼管消隱Nif(!isstop)即未按下暫停/Y分頻得到100hz時間脈沖if(zero)即按下復位按鈕Y實現1s計時N計時器清零if(s0==9)Ys0<=0,s1<=s1+1Ns0<=s0+1if(s1==5YNs1<=0,minu0<=minu0+1s1<=s1+1if(minu0==9)YNminu0<=0,minu1<=minu1+1minu0<=minu0+1if(minu1==5)Yminu1<=0Nminu1<=minu1+1調用顯示模塊結束程序:modulepaobiao(clk50m,pause,clr,led0,led1,led2,led3,led4,led5,led6,led7);parameterWIDTH=8;(*chip_pin="N2"*)(*chip_pin="N25"

inputclk50m;inputpause;-9-(*chip_pin="N26"*) inputclr;(*chip_pin="N9,P9,L7,L6,L9,L2,L3,Y18"*)output[7:0]led7;(*chip_pin="M4,M5,M3,M2,P3,P4,R2,AA20"*) output[7:0](*chip_pin="R3,R4,R5,T9,P7,P6,T2,U17"*)output[7:0]led5;(*chip_pin="T3,R6,R7,T4,U2,U1,U9,U18"*)output[7:0]led4;(*chip_pin="W24,U22,Y25,Y26,AA26,AA25,Y23,W19"*) output[7:0]led3;(*chip_pin="Y24,AB25,AB26,AC26,AC25,V22,AB23,V18"*) output[7:0](*chip_pin="AB24,AA23,AA24,Y22,W21,V21,V20,AF22"*)output[7:0]led1;(*chip_pin="V13,V14,AE11,AD11,AC12,AB12,AF10,AE22"*) output[7:0]led0;//=====================暫停標志=====================wireisstop;wirezero;

//標識跑表當前是否處于停止狀態switch#(8)switchstop(clk50m,pause,isstop);switch#(8)switchzero(clk50m,clr,zero);regcounter_100hz;//從50Mhz分頻到100hz的計數器wireclk100;//=================分頻得到100hz的時鐘=================//assignclk100=counter_100hz[18];assignclk100=counter_100hz;assignled0=8'b11111111;assignled1=8'b11111111;assignled2=8'b11111111;assignled3=8'b11111111;always@(posedgeclk50m)beginif(!isstop)beginif(counter_100hz==1)counter_100hz<=0;elsecounter_100hz=counter_100hz+1;endendreg[3:0]regfs0;//百分秒十位fscarry0; //百分秒十位的進位reg[3:0]fs1;//百分秒十位regfscarry1; //百分秒十位的進位reg[3:0]s0;//秒的個位regscarry0; //秒個位的進位reg[3:0]s1;//秒的十位regscarry1; //秒十位的進位-10-reg[3:0] minu0; //分的個位reg

miucarry0;

//分個位的進位reg[3:0] minu1; //分的十位always@(posedgeclk100orposedgezero)beginif(zero)beginfs0<=0;fscarry0<=0; elseif(clk100==1)beginif(fs0==9)beginfs0<=0;fscarry0<=1;endelsebeginfs0<=fs0+1;fscarry0<=0;endendendalways@(posedgefscarry0orposedgezero)beginif(zero)beginfs1<=0;fscarry1<=0;endelseif(fscarry0==1)beginif(fs1==9)beginfs1<=0;fscarry1<=1;endelsebeginfs1<=fs1+1;fscarry1<=0;endendendalways@(posedgefscarry1orposedgezero)beginif(zero)begins0<=0;scarry0<=0;endelseif(fscarry1==1)beginif(s0==9)begins0<=0;scarry0<=1;endelsebegins0<=s0+1;scarry0<=0;endendendalways@(posedgescarry0orposedgezero)beginif(zero)begins1<=0;scarry1<=0;endelseif(scarry0==1)beginif(s1==5)

溫馨提示

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

評論

0/150

提交評論