32進(jìn)制同步減法計(jì)數(shù)器設(shè)計(jì)解析_第1頁(yè)
32進(jìn)制同步減法計(jì)數(shù)器設(shè)計(jì)解析_第2頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、課題名稱3232 進(jìn)制同步減法計(jì)數(shù)器設(shè)計(jì)設(shè)計(jì)內(nèi)容及要求試設(shè)計(jì)一個(gè) 3232 進(jìn)制同步減法計(jì)數(shù)器,輸入的數(shù)字信號(hào)由實(shí)驗(yàn)裝置上的開(kāi) 關(guān)給定,輸出由 LEDLED 完成,同時(shí)數(shù)碼管也顯示輸入和輸出的數(shù)字信號(hào)。要求 設(shè)置 2 2 個(gè)按鈕,一個(gè)供開(kāi)始”用,一個(gè)供系統(tǒng)復(fù)位”用。系統(tǒng)提供 50MHZ50MHZ 頻率的時(shí)鐘源。完成該系統(tǒng)的硬件和軟件的設(shè)計(jì),并制作出實(shí)物裝置,調(diào)試 好后并能實(shí)際運(yùn)用(指導(dǎo)教師提供制作所需的器件),最后就課程設(shè)計(jì)本身提 交一篇課程設(shè)計(jì)說(shuō)明書(shū)。設(shè)計(jì)工作量1 1、VHDLVHDL 語(yǔ)言程序設(shè)計(jì);2 2、波形仿真;3 3、 在實(shí)驗(yàn)裝置上進(jìn)行硬件測(cè)試,并進(jìn)行演示;4 4、提交一份完整的課程

2、設(shè)計(jì)說(shuō)明書(shū),包括設(shè)計(jì)原理、程序設(shè)計(jì)、程序分析、 仿真分析、硬件測(cè)試、調(diào)試過(guò)程,參考文獻(xiàn)、設(shè)計(jì)總結(jié)等。進(jìn)度安排起止日期(或時(shí)間量)設(shè)計(jì)內(nèi)容(或預(yù)期目標(biāo))備注第 1 1 天課題介紹,答疑,收集材料第 2 2 天設(shè)計(jì)方案論證第 3 3 天進(jìn)一步討論方案,對(duì)設(shè)計(jì)方案進(jìn)行必要的修 正,方案確定后開(kāi)始進(jìn)行 VHDLVHDL 語(yǔ)言程序設(shè) 計(jì)第 4 4 天設(shè)計(jì) VHDLVHDL 語(yǔ)言程序第 5959 天在實(shí)驗(yàn)裝置上進(jìn)行硬件測(cè)試,對(duì) VHDLVHDL 語(yǔ)言 程序進(jìn)行必要的修正,并進(jìn)行演示第 1010 天編寫(xiě)設(shè)計(jì)說(shuō)明書(shū)系(部)主管領(lǐng)導(dǎo)意見(jiàn)年 月曰年 月曰教研室意見(jiàn)目錄一、設(shè)計(jì)目的 .1二、設(shè)計(jì)原理 .1三、設(shè)計(jì)

3、.13.1設(shè)計(jì)思路 .13.2設(shè)計(jì)步驟 .1四、.Quartus口9.0操作步驟3五、.程序45.1完整程序 .45.2仿真程序 .8六、仿真 .126.1仿真結(jié)果 .126.2仿真結(jié)果分析 .12七、.引腳分配13八、.課程設(shè)計(jì)總結(jié) .14參考文獻(xiàn) .151一、設(shè)計(jì)目的1 )鞏固和加深對(duì)“ EDA 技術(shù)”的基本知識(shí)的理解,提高綜合運(yùn)用本課程所學(xué)知識(shí)的能力。2 )培養(yǎng)學(xué)生根據(jù)課題需要選學(xué)參考書(shū)籍、查閱手冊(cè)、圖表和文獻(xiàn)資料的自學(xué)能力。通過(guò)獨(dú)立 思考,深入鉆研相關(guān)問(wèn)題,學(xué)會(huì)自己分析解決問(wèn)題的方法。3)培養(yǎng)硬件設(shè)計(jì)、軟件設(shè)計(jì)及系統(tǒng)軟、硬件調(diào)試的基本思路、方法和技巧,并能熟練使用當(dāng) 前較流行的一些有關(guān)

4、電路設(shè)計(jì)與分析的軟件和硬件。二、設(shè)計(jì)原理計(jì)數(shù)是一種最簡(jiǎn)單基本的運(yùn)算,計(jì)數(shù)器就是實(shí)現(xiàn)這種運(yùn)算的邏輯電路,計(jì)數(shù)器在數(shù)字系統(tǒng)中 主要是對(duì)脈沖的個(gè)數(shù)進(jìn)行計(jì)數(shù),以實(shí)現(xiàn)測(cè)量、計(jì)數(shù)和控制的功能,同時(shí)兼有分頻功能,計(jì)數(shù)器是 由基本的計(jì)數(shù)單元和一些控制門(mén)所組成,計(jì)數(shù)單元?jiǎng)t由一系列具有存儲(chǔ)信息功能的各類(lèi)觸發(fā)器構(gòu) 成,這些觸發(fā)器有 RS 觸發(fā)器、T觸發(fā)器、D 觸發(fā)器及 JK 觸發(fā)器等。按照計(jì)數(shù)器中的觸發(fā)器是否同 時(shí)翻轉(zhuǎn)分類(lèi),可將計(jì)數(shù)器分為同步計(jì)數(shù)器和異步計(jì)數(shù)器兩種。本次設(shè)計(jì)是 32進(jìn)制同步減法計(jì)數(shù)器。 32進(jìn)制的二進(jìn)制范圍為“ 00000”到“ 11111 ”, 即十進(jìn) 制 031。當(dāng)顯示的數(shù)小于 31 時(shí),數(shù)字將

5、自減,減至 0 時(shí)又跳會(huì)預(yù)先輸入的數(shù),如此循環(huán)。系統(tǒng)提 供 50MHZ 頻率的時(shí)鐘源,輸入的數(shù)字信號(hào)由實(shí)驗(yàn)裝置上的開(kāi)關(guān)給定,輸出由LED 完成,同時(shí)數(shù)碼管顯示輸入和輸出的數(shù)字信號(hào)。設(shè)置2 個(gè)按鈕,一個(gè)作“開(kāi)始”,即使能端 en,個(gè)作系統(tǒng)“復(fù)位” res。三、設(shè)計(jì)3.1設(shè)計(jì)思路本次程序設(shè)計(jì)的思路主要是分模塊進(jìn)行。32 進(jìn)制同步減法計(jì)數(shù)器的基本工作原理是循環(huán)自減,因此得需要一個(gè)自減 VHDL 的程序。系統(tǒng)提供 50MHZ 頻率的時(shí)鐘源,頻率太大,肉眼無(wú)法觀察,得 需要一個(gè)分頻的程序。數(shù)碼管的同步顯示需要一個(gè)掃頻的程序。輸入的數(shù)字可能是一位數(shù)也有可能是兩位數(shù),一個(gè)數(shù)碼管只能顯示一位數(shù),因此需要有把一

6、個(gè)兩位數(shù)分成兩個(gè)一位數(shù)的 程序,本次設(shè)計(jì)的程序就是利用了取余的函數(shù)rem。將以上幾個(gè)分支程序進(jìn)行整理,再加上數(shù)碼管的顯示程序以及一些附加程序便可得完整的程 序。3.2設(shè)計(jì)步驟1.自減 VHDL 程序process(en,res,clk1)beginx=conv_integer(start) rem 10;y=(conv_integer(start)/10)rem 10;x2=y;y2=x;i f res=1thendi=0;xp=start;elsif en=1thenif clk1event and clk1=1 thenif xp=0 thenxp=start;elsexp=xp-1;en

7、d if ;end if;end if;end process;程序中, res 是復(fù)位信號(hào), 功能是在在出現(xiàn) res=1 是,將數(shù)碼管回到最初始狀態(tài), 循環(huán)顯示; en 是一個(gè)開(kāi)始信號(hào),只有 en=1 時(shí),計(jì)數(shù)才開(kāi)始工作; conv_integer() 為十進(jìn)制數(shù); start 為輸入信號(hào), xp 為信號(hào)。2.分頻程序process(clk)variable a1:integer range 24999999 downto 0;beginif clkevent and clk=1 thenif a124999999 thena1:=a1+1;elsea1:=0;clk1=not clk1;e

8、nd if;end if;當(dāng) rst=0 是,是將二進(jìn)制變1end process;將 50MHZ 的頻率分為 1HZ 即將 50MHZ 分成兩部分,每數(shù)完 25MHZ 信號(hào) clkl 就變化一次, 以此達(dá)到目的。3. 掃頻程序process(clk)variable b1:integer range 20000 downto 0;begini f clkevent and clk=1 then if b120000 then b1:=b1+1;elseb1:=0;clk2=not clk2;end if;end if;end process;掃頻的程序與分頻程序原理都一樣4. 位數(shù)分離程序p

9、rocess(xp)variable b:integer range 0 to 9;variable a:integer range 0 to 3;beginb:=conv_integer(xp) rem 10; a:=(conv_integer(xp)/10)rem 10;ai=a;bi=b;end process;此程序用到了 rem 求余函數(shù),將個(gè)位與十位分開(kāi)。四、Quartusn9.0操作步驟1 .運(yùn)行 Quartusn9. 0 并創(chuàng)建工程路徑(如: E:example ),以便相關(guān)設(shè)計(jì)文件和工程管理。2. 新建一個(gè) VHDL 文本文件。3. 創(chuàng)建新工程并添加設(shè)計(jì)文件到工程。4. 選擇

10、目標(biāo)器件 Cyclone 系列 EP1C20F324C8 芯片。5. 對(duì)源代碼進(jìn)行語(yǔ)法檢查和編譯。6. 創(chuàng)建仿真波形文件并仿真。7引腳分配。8重編譯,編程下載,下載完成后驗(yàn)證功能。五、程序5.1完整程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DCLK ISPORT(clk:IN STD_LOGIC;res,en:in std_logic;start:IN STD_LOGIC_VECTOR(4 DOWNTO 0); le

11、d7s2:out std_logic_vector(6 downto 0); scan:outstd_logic_vector(3 downto 0) );end;architecture one of DCLK IS signal di:integer range 31 to 0; signal w:std_logic_vector( 2 downto 0);signal clk1,clk2:std_logic; signal ai,bi:integer;signal xp:STD_LOGIC_VECTOR(4 DOWNTO 0); signal x,y:integer range 0 to

12、 9;-FENPINbeginprocess(clk)variable a1:integer range 24999999 downto 0; beginif clkevent and clk=1 thenif a124999999 then a1:=a1+1;else a1:=0;clk1=not clk1;end if;end if; end process; -SCAN CLK process(clk) variable b1:integer range 20000 downto 0; begini f clkevent and clk=1 then if b120000 thenb1:

13、=b1+1;else b1:=0;clk2=not clk2;end if;end if;end process;-COUNTER process(en,res,clk1) beginx=conv_integer(start) rem 10; y=(conv_integer(start)/10)rem 10; x2=y;y2=x;i f res=1thendi=0; xp=start;elsif en=1thenif clk1event and clk1=1 then if xp=0 thenxp=start; elsexp=xp-1; end if ;end if;end if;end pr

14、ocess; process(xp) variable b:integer range 0 to 9; variable a:integer range 0 to 3;begin b:=conv_integer(xp) rem 10; a:=(conv_integer(xp)/10)rem 10; ai=a;bi=b;end process; process(ai,bi,clk2,y,x) begini f clk2event and clk2=1 then if w=100 thenw=000; else w=w+1;if w=000 thenscanled7s2led7s2led7s2le

15、d7s2null;end case;end if;if w=001 thenscanled7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2null;end case;end if;if w=010 thenscanled7s2led7s2led7s2led7s2null;end case;end if;if w=011 thenscanled7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2null;end case;end if;end if;end if;end

16、 process; end;5.2仿真程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DCLK ISPORT(clk:IN STD_LOGIC;res,en:in std_logic;start:IN STD_LOGIC_VECTOR(4 DOWNTO 0); led7s2:out std_logic_vector(6 downto 0);scan:out std_logic_vector(3 downto 0);x1,y

17、1:out integer range 0 to 9;x2,y2:out integer range 0 to 9;xp_disp:out STD_LOGIC_VECTOR(4 DOWNTO 0); end;architecture one of DCLK ISsignal di:integer range 31 to 0;signal w:std_logic_vector( 2 downto 0);signal clk1,clk2:std_logic;signal ai,bi:integer;signal xp:STD_LOGIC_VECTOR(4 DOWNTO 0); signal x,y

18、:integer range 0 to 9;begin-FENPIN process(clk)variable a1:integer range 4 downto 0;beginif clkevent and clk=1 thenif a14 thena1:=a1+1;elsea1:=0;clk1=not clk1;end if;end if;end process;-SCAN CLKprocess(clk)variable b1:integer range 20000 downto 0; begini f clkevent and clk=1 thenif b120000 thenb1:=b

19、1+1;else b1:=0;clk2=not clk2;end if;end if;end process;-COUNTER process(en,res,clk1) beginx=conv_integer(start) rem 10; y=(conv_integer(start)/10)rem 10; x2=y;-TEST SHURU SHIWEIy2=x;-TEST SHURU GEWEI i f res=1thendi=0;xp=start;elsif en=1thenif clk1event and clk1=1 thenif xp=0 thenxp=start;elsexp=xp-

20、1;end if ;end if;end if; xp_disp=xp; -TEST ZIJIAN end process;process(xp)variable b:integer range 0 to 9; variablea:integer range 0 to 3;begin b:=conv_integer(xp) rem 10; a:=(conv_integer(xp)/10)rem 10; ai=a;bi=b;x1=ai;-TEST SHUCHU SHIWEI y1=bi;-TEST SHUCHU GEWEI end process;process(ai,bi,clk2,y,x)

21、begini f clk2event and clk2=1 then if w=100then w=000;else w=w+1; if w=000 then scanled7s2led7s2led7s2led7s2null;end case;end if;if w=001 thenscanled7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2null;end case;end if;if w=010 thenscanled7s2led7s2led7s2led7s2null;end case;end if;if w=011 th

22、enscanled7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2led7s2nu II;end case;end if;end if;end if;end process;en d;六、仿真6.1仿真結(jié)果6.2仿真結(jié)果分析Clk 為時(shí)鐘源,10hz 分頻為 1hz , Ied7s2 為數(shù)碼管顯示,en 為使能控制端,res 為復(fù)位端,start 為輸入,scan 為片選輸出,x1 為輸出的十位,y1 為輸出的個(gè)位,x2 為輸入的十位,y2 為 輸入的個(gè)位,xp_disp 為輸入數(shù)的自減。當(dāng) res 為低電平,en 為高電平時(shí),程序開(kāi)始運(yùn)行

23、;當(dāng) res 為高電平時(shí),輸出的值就跳回最開(kāi) 始輸入的值,h!fah!fa B B B B- K K h!kh!k一.53.53-3-3-flIL-flIL-一arn-lb1!1! lele- - 4444 JPJP一inin聃一ntfntf - -高電平消失后,程序又開(kāi)始自減,如此循環(huán)顯示。七、引腳分配3Partition Hierarchyroot partitjonYesldkLocationPINJ3YesLocationPIN P3YeslresLocationPIN R1YeslstartOLocationPIh M3YesLocationPIh M4Yeslstart2Locab

24、onPIN N1YesR5tart3LxntjonPINJ42Yes吃t勺LocationPIN N3Yested7s20LocationPIN_L3Yested7s22LocationPIN H3Yesfted7s23LocabonPIN H4Yested7s24LocationPIN H1YesaiEd7s25LocationPIN L2Yesabd?s26LocationPIN K4YesiscanOLocationPIh G3YesCscanlLocationPIN G4Yes衿scan 2LocationPIN E2Yesscan 3LgtionPINJ=2Yesewn ew八、課程

25、設(shè)計(jì)總結(jié)EDA 課程設(shè)計(jì)很快就結(jié)束了, 雖然在之前的學(xué)習(xí)過(guò)程中還存在著沒(méi)有弄懂的問(wèn)題,但是通過(guò)這次設(shè)計(jì),進(jìn)一步加深了對(duì) EDA 的 了解,讓我對(duì)它有了更加濃厚的興趣。EDA 設(shè)計(jì)我感覺(jué)程序調(diào)試、試驗(yàn)軟件、硬件熟悉最重要。在編完各模塊程序之后,編譯查錯(cuò)最 初有十幾個(gè)錯(cuò)誤,有輸入錯(cuò)誤、語(yǔ)法錯(cuò)誤。一遍一遍的編譯查錯(cuò),直到?jīng)]有錯(cuò)誤。必須注意工程 名和實(shí)體名一致,不然一般會(huì)出錯(cuò)。在沒(méi)有錯(cuò)誤之后可以進(jìn)行波型仿真。若與理想的不同,再查 看程序,有無(wú)原理上的編輯錯(cuò)誤或沒(méi)有查出的輸入錯(cuò)誤。通過(guò)本次 EDA 課程設(shè)計(jì),讓我更進(jìn)一步的熟悉了VHDL 語(yǔ)言,了解了其中的語(yǔ)法,同時(shí),在做32 進(jìn)制同步減法計(jì)數(shù)器計(jì)數(shù)顯示的過(guò)程中, 遇到了很多的困難, 但從這些困哪中,我也受益匪淺, 有困難才會(huì)提高,這樣自己才能學(xué)到更多的東西。在本次課程設(shè)計(jì)中,讓我學(xué)到了不少知識(shí),知道了什么叫數(shù)碼管的動(dòng)態(tài)顯示,更深一步了解 了數(shù)碼管的顯示原理,以前在做實(shí)驗(yàn)時(shí),只知道按照實(shí)驗(yàn)指導(dǎo)書(shū)上一步一步按部就班的做,有些 地方根本就沒(méi)有深刻的理解,

溫馨提示

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

評(píng)論

0/150

提交評(píng)論