版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課程名稱(chēng)脈沖與數(shù)字電路</p><p><b> 設(shè)計(jì)題目簡(jiǎn)單運(yùn)算器</b></p><p><b> 專(zhuān)業(yè)通信工程</b></p><p><b> 班級(jí)</b></p&
2、gt;<p><b> 學(xué)號(hào)</b></p><p><b> 姓名</b></p><p> 完成日期2012年06月12日</p><p><b> 運(yùn)算器</b></p><p><b> 摘要</b></p>
3、<p> 設(shè)計(jì)一個(gè)簡(jiǎn)單運(yùn)算器。由頂層電路、運(yùn)算器、按鍵輸入、控制信號(hào)產(chǎn)生、修正結(jié)果、顯示等模塊構(gòu)成。用Quartus II繪制原理圖或編寫(xiě)VHDL程序,然后封裝畫(huà)出電路圖,該簡(jiǎn)單運(yùn)算器可以實(shí)現(xiàn)加、減法算數(shù)運(yùn)算和與、異或邏輯運(yùn)算,且該運(yùn)算器設(shè)計(jì)完之后經(jīng)過(guò)了Quartus II軟件和FPGA實(shí)驗(yàn)板的下載驗(yàn)證。</p><p> 關(guān)鍵詞:運(yùn)算器,Quartus II,VHDL程序</p>&
4、lt;p><b> 前言</b></p><p> 隨著FPGA性能的不斷完善,F(xiàn)PGA器件的種類(lèi)日益豐富,受到世界范圍內(nèi)電子設(shè)計(jì)人員的普遍歡迎,并占據(jù)了較大的市場(chǎng),其生產(chǎn)廠家也由原來(lái)的Xilinx公司一家增加到Altera、Actel、lattice等十幾家公司。</p><p> Altera公司的主要產(chǎn)品有:屬于FPGA的FLEX、ACEX、APEX
5、、Mercury、Excalibur、Stratix和Cyclone等系列;屬于CPLD的MAX和Classic系列。開(kāi)發(fā)工具有,被普遍認(rèn)為是最優(yōu)秀PLD 開(kāi)發(fā)平臺(tái)之一的MAX+Plus II和支持APEX、Mercury、Excalibur、Stratix和Cyclone系列器件的Quartus II開(kāi)發(fā)軟件。</p><p> Cyclone系列器件是Altera公司推出的低價(jià)位FPGA產(chǎn)品,是Strati
6、x系列的簡(jiǎn)化版,分為Cyclone I和Cyclone II兩個(gè)系列。Cyclone I系列產(chǎn)品為基于1.5V、采用0.13um全銅SRAM工藝的低成本FPGA。Cyclone II 系列產(chǎn)品基于1.2V,采用0.09um全銅CMOS工藝,SRAM編程技術(shù),其成本更低、容量更高、速度更快。它和高性能的Stratix II系列的FPGA是目前Altera公司主流產(chǎn)品。</p><p> 我的簡(jiǎn)單運(yùn)算器主要是用VH
7、DL語(yǔ)言編寫(xiě),以Cyclone器件為依托,并下載到Altera仿真工具箱Cyclone-EP1C6Q240C8驗(yàn)證功能成功,能夠初步完成簡(jiǎn)單運(yùn)算器的雛形。</p><p> 隨著大規(guī)模集成電路技術(shù)和計(jì)算機(jī)技術(shù)的高速發(fā)展,在涉及通信、國(guó)防、工業(yè)自動(dòng)化、計(jì)算機(jī)設(shè)計(jì)與應(yīng)用、儀器儀表等領(lǐng)域的電子系統(tǒng)設(shè)計(jì)工作中,F(xiàn)PGA技術(shù)的含量正以驚人的速度提升。電子類(lèi)的新技術(shù)項(xiàng)目的開(kāi)發(fā)也更多地依賴(lài)于FPGA技術(shù)的應(yīng)用,特別是隨著HD
8、L等硬件描述語(yǔ)言綜合功能和性能的提高,計(jì)算機(jī)中許多重要的元件(包括CPU)都用硬件描述語(yǔ)言來(lái)設(shè)計(jì)和表達(dá),許多微機(jī)CPU、硬核嵌入式系統(tǒng)(如ARM、MIPS)、軟核嵌入式系統(tǒng)(如NiosII)、大型CPU,乃至整個(gè)計(jì)算機(jī)系統(tǒng)都用FPGA來(lái)實(shí)現(xiàn),即所謂的單片系統(tǒng)SOC或SOPC(System On a Chip、System On a Programmerable Chip)。計(jì)算機(jī)和CPU的設(shè)計(jì)技術(shù)及其實(shí)現(xiàn)途徑進(jìn)入了一個(gè)全新的時(shí)代!不但如
9、此,傳統(tǒng)的CPU結(jié)構(gòu)模式,如馮諾依曼結(jié)構(gòu)和哈佛結(jié)構(gòu)正在接受巨大的挑戰(zhàn)。</p><p> 例如美國(guó)Wincom Systems 公司推出一款令人驚嘆的服務(wù)器,其核心部分是由FPGA完成的超強(qiáng)功能CPU。該系統(tǒng)工作能力超過(guò)50臺(tái)DELL或IBM計(jì)算機(jī),或SUN Microsystems 公司的服務(wù)器。該服務(wù)器的處理速度要比傳統(tǒng)服務(wù)器快50到300倍。我們知道,傳統(tǒng)的PC機(jī)及服務(wù)器通常采用諸如Intel公司的奔騰處
10、理器或SUN公司的SPARC芯片作為中央處理單元,而Wincom Systems的這款產(chǎn)品卻沒(méi)有采用微處理器,而是由FPGA芯片驅(qū)動(dòng)。FPGA芯片的運(yùn)行速度雖比奔騰處理器慢,但可并行處理多項(xiàng)任務(wù),而微處理器一次僅能處理一項(xiàng)任務(wù)。因此,Wincom Systems的服務(wù)器只需配置幾個(gè)價(jià)格僅為2000多美元的FPGA芯片,便可擊敗SUN公司的服務(wù)器或采用Intel處理器的計(jì)算機(jī)。</p><p> 50多年前,匈牙
11、利數(shù)學(xué)家馮諾依曼提出了計(jì)算機(jī)的設(shè)計(jì)構(gòu)想:通過(guò)中央處理器從儲(chǔ)存器中存取數(shù)據(jù),并逐一處理各項(xiàng)任務(wù)。然而現(xiàn)在,卻采用FPGA取代傳統(tǒng)微處理器獲得了更高的性能,致使美國(guó)Xilinx公司的首席執(zhí)行官Willem Roelandts認(rèn)為:“由馮諾依曼提出的電腦架構(gòu)已經(jīng)走到盡頭”,“可編程芯片將掀起下一輪應(yīng)用高潮”。</p><p> FPGA芯片操作靈活,可以重復(fù)擦寫(xiě)無(wú)限次,而微處理器均采用固定電路,只能進(jìn)行一次性設(shè)計(jì)。設(shè)
12、計(jì)人員可通過(guò)改變FPGA中晶體管的開(kāi)關(guān)狀態(tài)對(duì)電路進(jìn)行重寫(xiě),即重配置,從而盡管FPGA芯片的時(shí)鐘頻率要低于奔騰處理器,但是由于FPGA芯片可并行處理各種不同的運(yùn)算,所以可以完成許多復(fù)雜的任務(wù)。正如Willem Roelandts所說(shuō)的,“我們認(rèn)為下一代超級(jí)電腦將基于可編程邏輯器件”,他聲稱(chēng),這種機(jī)器的功能比目前最大的超級(jí)電腦還要強(qiáng)大許多倍。EDA專(zhuān)家William Carter認(rèn)為,只要EDA開(kāi)發(fā)工具的功能允許,將有無(wú)數(shù)的證據(jù)證明FPGA
13、 具有這種神奇的能力,進(jìn)而實(shí)現(xiàn)基于FPGA的超級(jí)電腦的開(kāi)發(fā)。</p><p> 此外,美國(guó)加州大學(xué)伯克利分校和楊百翰大學(xué)的研究人員也正在設(shè)計(jì)基于FPGA的電腦,這些電腦可在運(yùn)行中實(shí)現(xiàn)動(dòng)態(tài)重配置。這對(duì)定位危險(xiǎn)目標(biāo)等軍事應(yīng)用和面容識(shí)別之類(lèi)的計(jì)算密集型安全應(yīng)用十分有用。由此看來(lái),在計(jì)算機(jī)應(yīng)用領(lǐng)域和計(jì)算機(jī)系統(tǒng)設(shè)計(jì)領(lǐng)域中,EDA技術(shù)和FPGA的應(yīng)用方興未艾!</p><p> 硬件描述語(yǔ)言HDL
14、(Hardware Description Language)是EDA技術(shù)的另一重要組成部分,常見(jiàn)的HDL有:VHDL、Verilog HDL、System Verilog和SystemC。其中VHDL、Verilog在現(xiàn)在EDA設(shè)計(jì)中使用最多,也得到幾乎所有的主流EDA工具的支持。而后兩種HDL 語(yǔ)言尚處于完善過(guò)程中。</p><p> VHDL語(yǔ)言具有很強(qiáng)的電路描述和建模能力,能從多個(gè)層次對(duì)數(shù)字系統(tǒng)進(jìn)行建模
15、和描述,從而大大簡(jiǎn)化了硬件設(shè)計(jì)任務(wù),提高了設(shè)計(jì)效率和可靠性。</p><p> VHDL具有與具體硬件電路無(wú)關(guān)和與設(shè)計(jì)平臺(tái)無(wú)關(guān)的特性,并且具有良好的電路行為描述和系統(tǒng)描述能力,在語(yǔ)言易讀性和層次化結(jié)構(gòu)設(shè)計(jì)方面表現(xiàn)了強(qiáng)大的生命力和應(yīng)用潛力。因此,VHDL支持各種模式的設(shè)計(jì)方法:自頂向下與自底向上或混合方法,在面對(duì)當(dāng)今許多電子產(chǎn)品生命周期縮短,需要多次重新設(shè)計(jì)以融入最新技術(shù)、改變工藝等方面, VHDL都表現(xiàn)了良好的
16、適應(yīng)性。</p><p><b> 第一章系統(tǒng)原理</b></p><p><b> 1.1系統(tǒng)功能</b></p><p> 該系統(tǒng)是基于FPGA設(shè)計(jì)的簡(jiǎn)單運(yùn)算器,可以實(shí)現(xiàn)簡(jiǎn)單的-7到+7范圍內(nèi)的加、減、與、以及異或四則運(yùn)算。將設(shè)計(jì)好的系統(tǒng)電路圖與硬件實(shí)驗(yàn)板相連接,進(jìn)行運(yùn)算驗(yàn)證。該實(shí)驗(yàn)板由一個(gè)8按鍵電路和一個(gè)32位
17、LCD顯示器組成,通過(guò)相應(yīng)的按鍵輸入把運(yùn)算結(jié)果顯示在LCD顯示器上。</p><p><b> 1.2系統(tǒng)原理圖</b></p><p><b> 1.3電路設(shè)計(jì)原理</b></p><p> 該運(yùn)算器電路由按鍵輸入、控制、修正、顯示和運(yùn)算五大模塊組成,來(lái)實(shí)現(xiàn)加、減、與、異或運(yùn)算功能。首先按鍵模塊用于輸入兩個(gè)數(shù)和運(yùn)算
18、符,通過(guò)控制模塊傳送到運(yùn)算器模塊進(jìn)行運(yùn)算,再連接到修正模塊,通過(guò)修正模塊對(duì)“溢出”的數(shù)值進(jìn)行修正,最后顯示模塊功能實(shí)現(xiàn)把運(yùn)算過(guò)程反應(yīng)到LCD顯示器上。</p><p><b> 第二章系統(tǒng)組成</b></p><p><b> 2.1按鍵模塊</b></p><p> 2.1.1按鍵模塊VHDL程序</p>
19、;<p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY KEY I
20、S</p><p> PORT(EN:OUT STD_LOGIC;</p><p> YSF:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);</p><p> RSTN,CLK:IN STD_LOGIC;</p><p> KEYA,KEYB:IN STD_LOGIC;</p><p>
21、KADD,KSUB,KAND,KXOR,KEQU:IN STD_LOGIC;</p><p> A,B,C,D:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> XSYSF:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> XA,XB:OUT STD_LOGIC_VECTOR(7 DOWN
22、TO 0));</p><p><b> END KEY;</b></p><p> ARCHITECTURE ARCH OF KEY IS</p><p> SIGNAL TKADD,TKSUB,TKAND,TKXOR,TKEQU :STD_LOGIC;</p><p> SIGNAL TA,TB:STD_LO
23、GIC_VECTOR(3 DOWNTO 0);</p><p><b> BEGIN</b></p><p> ----保存A------</p><p> PROCESS (KEYA,RSTN)</p><p><b> BEGIN</b></p><p> IF
24、 RSTN='0' THEN TA<="0000";</p><p> ELSIF (KEYA'EVENT AND KEYA='1')THEN</p><p><b> TA<=TA+1;</b></p><p><b> END IF;</b>
25、</p><p> END PROCESS;</p><p> -----保存B------</p><p> PROCESS (KEYB,RSTN)</p><p><b> BEGIN</b></p><p> IF RSTN='0' THEN TB<=&quo
26、t;0000";</p><p> ELSIF(KEYB'EVENT AND KEYB='1')THEN</p><p><b> TB<=TB+1;</b></p><p><b> END IF;</b></p><p> END PROCESS;
27、</p><p> ------獲取信號(hào)------</p><p> PROCESS(RSTN,KADD)</p><p><b> BEGIN </b></p><p> IF RSTN='0' THEN TKADD<='0';</p><p>
28、 ELSIF (KADD'EVENT AND KADD='1')THEN TKADD<='1';END IF;</p><p> END PROCESS;</p><p> ------------------</p><p> PROCESS(RSTN,KSUB)</p><p><
29、b> BEGIN </b></p><p> IF RSTN='0' THEN TKSUB<='0';</p><p> ELSIF (KSUB'EVENT AND KSUB='1')THEN TKSUB<='1';END IF;</p><p> END
30、PROCESS;</p><p><b> --------</b></p><p> PROCESS(RSTN,KAND)</p><p><b> BEGIN </b></p><p> IF RSTN='0' THEN TKAND<='0';<
31、;/p><p> ELSIF (KAND'EVENT AND KAND='1')THEN TKAND<='1';END IF;</p><p> END PROCESS;</p><p> PROCESS(RSTN,KXOR)</p><p><b> BEGIN </b>
32、;</p><p> IF RSTN='0' THEN TKXOR<='0';</p><p> ELSIF (KXOR'EVENT AND KXOR='1')THEN TKXOR<='1';END IF;</p><p> END PROCESS;</p>&l
33、t;p> -------------</p><p> PROCESS(RSTN,KEQU)</p><p><b> BEGIN </b></p><p> IF RSTN='0' THEN TKEQU<='0';</p><p> ELSIF (KEQU'
34、EVENT AND KEQU='1')THEN TKEQU<='1';END IF;</p><p> END PROCESS;</p><p> PROCESS(RSTN,CLK,TKADD,TKSUB,TKAND,TKXOR,TKEQU,TA,TB)</p><p><b> BEGIN</b>&
35、lt;/p><p> IF RSTN='0' THEN YSF<="00";EN<='0';XSYSF<="00100000";</p><p> ELSIF(CLK'EVENT AND CLK='1') THEN</p><p> IF TKADD=
36、'1' THEN YSF<="00";XSYSF<="00101011";A<=TA;B<=TB;END IF;</p><p> IF TKSUB='1' THEN YSF<="01";XSYSF<="00101101";A<=TA;B<=TB;END
37、 IF;</p><p> IF TKAND='1' THEN YSF<="10";XSYSF<="00101010";A<=TA;C<=TB;END IF;</p><p> IF TKEQU='1' THEN EN<='1';END IF;</p>&
38、lt;p><b> END IF;</b></p><p> END PROCESS;</p><p> PROCESS(TA,TB,CLK)</p><p><b> BEGIN</b></p><p> IF(CLK'EVENT AND CLK='1')T
39、HEN</p><p> CASE TA IS</p><p> WHEN "0000"=>XA<="00110000";</p><p> WHEN "0001"=>XA<="00110001";</p><p> WHEN &q
40、uot;0010"=>XA<="00110010";</p><p> WHEN "0011"=>XA<="00110011";</p><p> WHEN "0100"=>XA<="00110100";</p><p&g
41、t; WHEN "0101"=>XA<="00110101";</p><p> WHEN "0110"=>XA<="00110110";</p><p> WHEN "0111"=>XA<="00110111";</p&g
42、t;<p> WHEN "1000"=>XA<="00111000";</p><p> WHEN "1001"=>XA<="00111001";</p><p> WHEN "1010"=>XA<="01000001&quo
43、t;;</p><p> WHEN "1011"=>XA<="01000010";</p><p> WHEN "1100"=>XA<="01000011";</p><p> WHEN "1101"=>XA<="0
44、1000100";</p><p> WHEN "1110"=>XA<="01000101";</p><p> WHEN "1111"=>XA<="01000110";</p><p> WHEN OTHERS =>NULL;</p&
45、gt;<p><b> END CASE;</b></p><p> CASE TB IS</p><p> WHEN "0000"=>XB<="00110000";</p><p> WHEN "0001"=>XB<="0011
46、0001";</p><p> WHEN "0010"=>XB<="00110010";</p><p> WHEN "0011"=>XB<="00110011";</p><p> WHEN "0100"=>XB<
47、="00110100";</p><p> WHEN "0101"=>XB<="00110101";</p><p> WHEN "0110"=>XB<="00110110";</p><p> WHEN "0111"
48、=>XB<="00110111";</p><p> WHEN "1000"=>XB<="00111000";</p><p> WHEN "1001"=>XB<="00111001";</p><p> WHEN "
49、;1010"=>XB<="01000001";</p><p> WHEN "1011"=>XB<="01000010";</p><p> WHEN "1100"=>XB<="01000011";</p><p>
50、 WHEN "1101"=>XB<="01000110";</p><p> WHEN "1110"=>XB<="01000101";</p><p> WHEN "1111"=>XB<="01000110";</p>
51、<p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> END ARCH;</b>&
52、lt;/p><p> 2.1.2按鍵模塊仿真波形</p><p> 2.1.3按鍵模塊電路封裝圖</p><p> 2.1.4按鍵模塊功能</p><p> 實(shí)現(xiàn)對(duì)按鍵的設(shè)定及控制,得以把運(yùn)算數(shù)據(jù)輸入電路。</p><p> 2.2控制信號(hào)產(chǎn)生模塊</p><p> 2.2.1控制模塊V
53、HDL程序</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>
54、 ENTITY CP3 IS</p><p> PORT(RSTN,CLK:IN STD_LOGIC;</p><p> CP,CPT,CPMUX:BUFFER STD_LOGIC;</p><p> SADD,SSUB,SAND,SXOR:OUT STD_LOGIC_VECTOR(1 DOWNTO 0));</p><p><
55、b> END CP3;</b></p><p> ARCHITECTURE BEHAVIORAL OF CP3 IS</p><p> TYPE STATE1 IS(S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11);</p><p> SIGNAL PRES1,NXS1:STATE1;</p>&l
56、t;p> TYPE STATE2 IS(SS0,SS1,SS2,SS3);</p><p> SIGNAL PRES2,NXS2:STATE2;</p><p><b> BEGIN</b></p><p> PROCESS(CLK,RSTN)</p><p><b> BEGIN</b&
57、gt;</p><p> IF (RSTN='0')THEN PRES1<=S0;</p><p> ELSIF(CLK'EVENT AND CLK='1')THEN</p><p> PRES1<=NXS1;</p><p><b> END IF;</b>&
58、lt;/p><p> END PROCESS;</p><p> PROCESS(PRES1)</p><p><b> BEGIN</b></p><p> CASE PRES1 IS</p><p><b> WHEN S0=></b></p>
59、<p> CP<='1';CPMUX<='0';CPT<='0';NXS1<=S1;</p><p><b> WHEN S1=></b></p><p> CP<='0';CPMUX<='0';CPT<='0'
60、;;NXS1<=S2;</p><p><b> WHEN S2=></b></p><p> CP<='0';CPMUX<='1';CPT<='0';NXS1<=S3;</p><p><b> WHEN S3=></b>&l
61、t;/p><p> CP<='1';CPMUX<='1';CPT<='0';NXS1<=S4;</p><p><b> WHEN S4=></b></p><p> CP<='1';CPMUX<='0';CPT<=
62、'0';NXS1<=S5;</p><p><b> WHEN S5=></b></p><p> CP<='0';CPMUX<='0';CPT<='0';NXS1<=S6;</p><p><b> WHEN S6=>&l
63、t;/b></p><p> CP<='0';CPMUX<='1';CPT<='0';NXS1<=S7;</p><p><b> WHEN S7=></b></p><p> CP<='1';CPMUX<='1'
64、;;CPT<='0';NXS1<=S8;</p><p><b> WHEN S8=></b></p><p> CP<='1';CPMUX<='1';CPT<='0';NXS1<=S9;</p><p><b> WHEN
65、 S9=></b></p><p> CP<='0';CPMUX<='1';CPT<='1';NXS1<=S10;</p><p> WHEN S10=></p><p> CP<='0';CPMUX<='1';CPT&l
66、t;='1';NXS1<=S11;</p><p> WHEN S11=></p><p> CP<='1';CPMUX<='1';CPT<='1';NXS1<=S11;</p><p><b> END CASE;</b></p&g
67、t;<p> END PROCESS;</p><p> PROCESS(CP,RSTN)</p><p><b> BEGIN</b></p><p> IF (RSTN='0')THEN PRES2<=SS0;</p><p> ELSIF(CP'EVENT AN
68、D CP='0')THEN</p><p> PRES2<=NXS2;</p><p><b> END IF;</b></p><p> END PROCESS;</p><p> PROCESS(PRES2)</p><p><b> BEGIN<
69、;/b></p><p> CASE PRES2 IS</p><p> WHEN SS0=></p><p> SADD<="00";SSUB<="00";SAND<="00";SXOR<="00";</p><p>
70、 NXS2<=SS1;</p><p> WHEN SS1=></p><p> SADD<="01";SSUB<="00";SAND<="00";SXOR<="00";</p><p> NXS2<=SS2;</p><
71、;p> WHEN SS2=></p><p> SADD<="00";SSUB<="01";SAND<="10";SXOR<="11";</p><p> NXS2<=SS3;</p><p> WHEN SS3=></p&g
72、t;<p> SADD<="00";SSUB<="01";SAND<="10";SXOR<="11";</p><p> NXS2<=SS3;</p><p><b> END CASE;</b></p><p>
73、 END PROCESS;</p><p> END BEHAVIORAL;</p><p> 2.2.2控制模塊仿真波形</p><p> 2.2.3控制模塊電路封裝圖</p><p> 2.2.4控制模塊功能</p><p> 實(shí)現(xiàn)對(duì)電路運(yùn)算的控制。</p><p><b&g
74、t; 2.3修正模塊</b></p><p> 2.3.1修正模塊VHDL程序</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p>
75、 USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY XZJG IS</p><p> PORT(RSTN:IN STD_LOGIC;</p><p> S:IN STD_LOGIC_VECTOR(1 DOWNTO 0);</p><p> CLK,OVER,COUT:IN STD_LOG
76、IC;</p><p> T:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> FH:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> SH,SL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p><b> END XZ
77、JG;</b></p><p> ARCHITECTURE BEHAVIORAL OF XZJG IS</p><p> SIGNAL OC:STD_LOGIC_VECTOR(1 DOWNTO 0);</p><p> SIGNAL TH,TL:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>&l
78、t;b> BEGIN</b></p><p> PROCESS(RSTN,CLK,OVER,COUT)</p><p><b> BEGIN</b></p><p> IF(CLK'EVENT AND CLK='1')THEN</p><p> OC<=OVER&
79、amp;COUT;</p><p><b> END IF;</b></p><p> END PROCESS;</p><p> PROCESS(OC,CLK)</p><p><b> BEGIN</b></p><p> IF(RSTN='0'
80、)THEN</p><p> TH<="0000";TL<="0000";</p><p> ELSIF(CLK'EVENT AND CLK='1')THEN</p><p> CASE OC IS</p><p> WHEN"00"=&g
81、t;TH<="0000";</p><p><b> CASE T I</b></p><p> WHEN"0000"=>TL<="0000";FH<="00101011";</p><p> WHEN"0001"=
82、>TL<="0001";FH<="00101011";</p><p> WHEN"0010"=>TL<="0010";FH<="00101011";</p><p> WHEN"0011"=>TL<="001
83、1";FH<="00101011";</p><p> WHEN"0100"=>TL<="0100";FH<="00101011";</p><p> WHEN"0101"=>TL<="0101";FH<="
84、;00101011";</p><p> WHEN"0110"=>TL<="0110";FH<="00101011";</p><p> WHEN"0111"=>TL<="0111";FH<="00101011";<
85、/p><p> WHEN"1000"=>TL<="1000";FH<="01011101";</p><p> WHEN"1001"=>TL<="0111";FH<="00101101";</p><p> W
86、HEN"1010"=>TL<="0110";FH<="00101101";</p><p> WHEN"1011"=>TL<="0101";FH<="00101101";</p><p> WHEN"1100"=
87、>TL<="0100";FH<="00101101";</p><p> WHEN"1101"=>TL<="0011";FH<="00101101";</p><p> WHEN"1110"=>TL<="001
88、0";FH<="00101101";</p><p> WHEN"1111"=>TL<="0001";FH<="00101101";</p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE
89、;</b></p><p> WHEN"01"=>TH<="0000";</p><p><b> CASE T IS</b></p><p> WHEN"0000"=>TL<="0000";FH<="001
90、01011";</p><p> WHEN"0001"=>TL<="0001";FH<="00101011";</p><p> WHEN"0010"=>TL<="0010";FH<="00101011"; </p&
91、gt;<p> WHEN"0011"=>TL<="0011";FH<="00101011";</p><p> WHEN"0100"=>TL<="0100";FH<="00101011";</p><p> WHEN
92、"0101"=>TL<="0101";FH<="00101011";</p><p> WHEN"0110"=>TL<="0110";FH<="00101011";</p><p> WHEN"0111"=>
93、;TL<="0111";FH<="00101011";</p><p> WHEN"1000"=>TL<="1000";FH<="00101101";</p><p> WHEN"1001"=>TL<="0111&q
94、uot;;FH<="00101101";</p><p> WHEN"1010"=>TL<="0110";FH<="00101101";</p><p> WHEN"1011"=>TL<="0101";FH<="00
95、101101";</p><p> WHEN"1100"=>TL<="0100";FH<="00101101";</p><p> WHEN"1101"=>TL<="0011";FH<="00101101";</p&
96、gt;<p> WHEN"1110"=>TL<="0010";FH<="00101101";</p><p> WHEN"1111"=>TL<="0001";FH<="00101101";</p><p> WHEN
97、 OTHERS=>NULL;</p><p><b> END CASE;</b></p><p> WHEN"10"=>FH<="00101011";</p><p><b> CASE T IS</b></p><p> WHEN
98、"1000"=>TH<="0000";TL<="1000";</p><p> WHEN"1001"=>TH<="0000";TL<="1001";</p><p> WHEN"1010"=>TH<=
99、"0001";TL<="0000";</p><p> WHEN"1011"=>TH<="0001";TL<="0001";</p><p> WHEN"1100"=>TH<="0001";TL<=&quo
100、t;0010";</p><p> WHEN"1101"=>TH<="0001";TL<="0011";</p><p> WHEN"1110"=>TH<="0001";TL<="0100";</p><
101、;p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p> WHEN"11"=>FH<="00101101";</p><p><b> CASE T IS</b></p><
102、;p> WHEN"0000"=>TH<="0001";TL<="0110";</p><p> WHEN"0001"=>TH<="0001";TL<="0101";</p><p> WHEN"0010"
103、=>TH<="0001";TL<="0100";</p><p> WHEN"0011"=>TH<="0001";TL<="0011";</p><p> WHEN"0100"=>TH<="0001"
104、;TL<="0010";</p><p> WHEN"0101"=>TH<="0001";TL<="0001";</p><p> WHEN"0110"=>TH<="0001";TL<="0000";<
105、;/p><p> WHEN"0111"=>TH<="0000";TL<="1001";</p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p><b>
106、END CASE;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> PROCESS(RSTN,S,TH,TL,CLK)</p><p><b> BEGIN</b></p><p>
107、 IF(RSTN='0')THEN SH<="0000";SL<="0000";</p><p> ELSIF(CLK'EVENT AND CLK='0')THEN</p><p><b> CASE S IS</b></p><p> WHEN&
108、quot;00"=>SH<=TH;SL<=TL;</p><p> WHEN"01"=>SH<=TH;SL<=TL;</p><p> WHEN"10"=>SH<="0000";SL<=T;</p><p> WHEN"11&q
109、uot;=>SH<="0000";SL<=T;</p><p><b> END CASE;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END BEHAVIORAL;</
110、p><p> 2.3.2修正模塊仿真波形</p><p><b> 正溢出波形</b></p><p><b> 負(fù)溢出波形</b></p><p> 2.3.3修正模塊電路封裝圖</p><p> 2.3.4修正模塊功能</p><p> 實(shí)
111、現(xiàn)對(duì)運(yùn)算中有超過(guò)-7到7的溢出的結(jié)果進(jìn)行修正,方便讀取</p><p><b> 2.4顯示模塊</b></p><p> 2.4.1顯示模塊VHDL程序</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p&g
112、t; USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY XIANSHI IS</p><p> PORT(CLK:IN STD_LOGIC;</p><p> R0:IN STD_LOGIC_VECTOR(7
113、 DOWNTO 0);</p><p> R1,R2:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> R3,R4,R5:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> RS:BUFFER STD_LOGIC;</p><p> RW:OUT STD_LOGIC;&
114、lt;/p><p> EN:OUT STD_LOGIC;</p><p> CLK_OUT:BUFFER STD_LOGIC;</p><p> D:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0));</p><p> END XIANSHI;</p><p> ARCHITECTURE
115、BEHAVIORAL OF XIANSHI IS</p><p> TYPE XIANSHI IS ARRAY(0 TO 31)OF STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> SIGNAL QX:XIANSHI:=((OTHERS=>"00100000"));</p><p> TYPE STATE
116、 IS(CLEAR,IDS,DLNF,DCB,DDRAM1,OUTDATA1,DDRAM2,OUTDATA2);</p><p> SIGNAL COUNT:STD_LOGIC_VECTOR(15 DOWNTO 0);</p><p> SIGNAL LCLK_OUT:STD_LOGIC;</p><p> SIGNAL COUNTS:INTEGER RANG
117、E 0 TO 3000000:=0;</p><p> SIGNAL CURRENT_STATE:STATE;</p><p> SIGNAL TEMPA:STD_LOGIC_VECTOR(4 DOWNTO 0):="00000";</p><p><b> BEGIN</b></p><p>
118、 PROCESS(CLK_OUT,CLK)</p><p><b> BEGIN</b></p><p> IF(RISING_EDGE(CLK))THEN</p><p> COUNTS<=COUNTS+1;</p><p> IF(COUNTS=3000000)THEN</p><
119、p> CLK_OUT<=NOT CLK_OUT;</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> QX(2)<=R3;</p><p>
120、; QX(3)<=R4;</p><p> QX(4)<=R5;</p><p> QX(5)<="00100000";</p><p> QX(6)<=R0;</p><p> QX(7)<="0011"&R1;</p><p>
121、 QX(8)<="0011"&R2;</p><p> PROCESS(CLK,LCLK_OUT)</p><p><b> BEGIN</b></p><p> IF(RISING_EDGE(CLK))THEN</p><p> COUNT<=COUNT+1;</
122、p><p> IF(COUNT=0)THEN</p><p> LCLK_OUT<=NOT LCLK_OUT;</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</
123、p><p> EN<=LCLK_OUT;</p><p> PROCESS(LCLK_OUT,CURRENT_STATE)</p><p><b> BEGIN</b></p><p> IF RISING_EDGE(LCLK_OUT)THEN</p><p><b> RS
124、<='0';</b></p><p><b> RW<='0';</b></p><p> CASE CURRENT_STATE IS</p><p> WHEN CLEAR=></p><p> D<="00000001";
125、</p><p> CURRENT_STATE<=DLNF;</p><p> WHEN DLNF=></p><p> D<="00111000";</p><p> CURRENT_STATE<=IDS;</p><p> WHEN IDS=></p
126、><p> D<="00000110";</p><p> CURRENT_STATE<=DCB;</p><p> WHEN DCB=></p><p> D<="00001100";</p><p> CURRENT_STATE<=DDRA
127、M1;</p><p> WHEN DDRAM1=></p><p> D<="10000000"+TEMPA(3 DOWNTO 0);</p><p> CURRENT_STATE<=OUTDATA1;</p><p> WHEN OUTDATA1=></p><p&g
128、t;<b> RS<='1';</b></p><p> D<=QX(CONV_INTEGER(TEMPA));</p><p> TEMPA<=TEMPA+1;</p><p> IF TEMPA="10000"THEN</p><p> CURRENT_
129、STATE<=DDRAM2;</p><p><b> ELSE</b></p><p> CURRENT_STATE<=DDRAM1; </p><p><b> END IF;</b></p><p> WHEN DDRAM2=></p><p>
130、; D<="11000000"+TEMPA(3 DOWNTO 0);</p><p> CURRENT_STATE<=OUTDATA2;</p><p> WHEN OUTDATA2=>RS<='1';</p><p> D<=QX(CONV_INTEGER(TEMPA));</p>
131、;<p> TEMPA<=TEMPA+1;</p><p> IF TEMPA="00000"THEN</p><p> CURRENT_STATE<=DDRAM1;</p><p><b> ELSE</b></p><p> CURRENT_STATE<=
132、DDRAM2;</p><p><b> END IF;</b></p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p><b> END IF;</b></p><p>
133、; END PROCESS;</p><p> END BEHAVIORAL;</p><p> 2.4.2顯示模塊電路封裝圖</p><p> 2.4.3顯示模塊功能</p><p> 通過(guò)顯示電路把運(yùn)算結(jié)果顯示到LCD顯示器上。</p><p><b> 2.5運(yùn)算器模塊</b>&
134、lt;/p><p> 2.5.1運(yùn)算器模塊功能</p><p> 對(duì)輸入的數(shù)據(jù)進(jìn)行簡(jiǎn)單的運(yùn)算,輸出運(yùn)算結(jié)果。</p><p> 2.5.2運(yùn)算器模塊電路圖</p><p><b> 第三章定制選擇器</b></p><p><b> 3.1定制選擇器</b></p
135、><p> 新建“原理圖Block Diagram”文件后,點(diǎn)打開(kāi)下圖,</p><p> 點(diǎn)擊按鈕Megewizard Plug-In Manager, 打開(kāi)下圖,點(diǎn)擊next,打開(kāi)圖見(jiàn)下頁(yè)。</p><p> 在下圖左側(cè)選擇Gates Lpm_Mux</p><p> 在下圖右側(cè)找到你的文件夾后,輸入文件名MUX44<
136、/p><p> 點(diǎn)擊NEXT,打開(kāi)下頁(yè)圖</p><p> 在下圖中設(shè)置選擇器的輸入輸出線(xiàn):</p><p> 設(shè)置數(shù)據(jù)輸入端個(gè)數(shù)為4。</p><p> 設(shè)置每個(gè)數(shù)據(jù)輸入端的寬度(即總線(xiàn)位數(shù))為4。</p><p> 設(shè)置輸出緩沖時(shí)間為1個(gè)周期。</p><p> 點(diǎn)擊NEXT,打開(kāi)下
137、頁(yè)圖。</p><p> 在下面圖中 mux43.bsf打鉤,然后點(diǎn)擊NEXT。</p><p> 點(diǎn)擊下圖的按鈕Finish,完成定制。</p><p> 3.2用VHDL符號(hào)圖畫(huà)運(yùn)算器頂層電路圖</p><p> 1.新建文件夾:“運(yùn)算器綜合電路”</p><p> 2. 新建原理圖文件,放置若干in
138、put后,保存,文件名TOP</p><p><b> 3. 建立工程</b></p><p> 4. 把KEY.VHD CP3.VHD XZJG.. VHD XIANSHI.VHD 和定制的2個(gè)選擇器文件:mux44.vhd mux42.vhd mux44.bsf mux42.bsf 共6個(gè)文件復(fù)制到文件夾“運(yùn)算器綜合電路”中</p&
139、gt;<p> 5. 把這6個(gè)文件加到工程中:操作見(jiàn)下面2個(gè)圖</p><p> 在下圖中點(diǎn)擊按鈕“Add All”</p><p> 6. 把按鍵模塊、信號(hào)發(fā)生器模塊和修正結(jié)果模塊和顯示模塊的代碼封裝成符號(hào)圖:</p><p> (1)打開(kāi)某個(gè)模塊的代碼,例如按鍵模塊代碼KEY.VHD,</p><p> ?。?)選
140、擇FILE菜單的Create /Update,</p><p> ?。?)選Create Symbol Files For Current File 。</p><p> 系統(tǒng)自動(dòng)把符號(hào)保存到工程中。</p><p><b> 7. 畫(huà)頂層電路</b></p><p> 點(diǎn)打開(kāi)下圖,展開(kāi)Project,選擇一個(gè)符號(hào)
141、名稱(chēng),放到原理圖文件中。</p><p> 第四章 下載驗(yàn)證及調(diào)試</p><p> 4.1器件選擇及引腳設(shè)置</p><p><b> 圖3-1 器件選擇</b></p><p> 如圖,在Quartus II工具欄選擇Assignments->Devices如圖選擇,并在Device&Opiti
142、ons選項(xiàng)卡里如下圖設(shè)置。</p><p><b> 圖3-2 器件選擇</b></p><p> 然后再在Assignments里選擇Pins,打開(kāi)如下圖的選項(xiàng)卡,按圖進(jìn)行引腳設(shè)置。</p><p> 圖3-3 運(yùn)算器引腳設(shè)置</p><p><b> 4.2配置文件下載</b></
143、p><p> 連上實(shí)驗(yàn)板并安裝好驅(qū)動(dòng),在設(shè)置編程器選擇HardWare Setup里的USB-ByteBlasterMV,按下Start下載到試驗(yàn)箱并進(jìn)行按鍵測(cè)試。</p><p><b> 圖3-4 下載驗(yàn)證</b></p><p><b> 結(jié)論</b></p><p> 經(jīng)過(guò)一周的時(shí)間,我
144、順利地完成了這次課程設(shè)計(jì)。在本次的課程設(shè)計(jì)中,我對(duì)課本上學(xué)到的數(shù)字邏輯知識(shí)有了進(jìn)一步的了解和認(rèn)識(shí)并且把課堂上學(xué)到的課本知識(shí)與實(shí)際融合聯(lián)系起來(lái),拓寬了我對(duì)該專(zhuān)業(yè)的視野,增厚了我對(duì)這門(mén)課程的興趣。在課程設(shè)計(jì)中因?yàn)橛辛酥笇?dǎo)老師耐心的指導(dǎo)和同學(xué)熱心的幫助,我才能順利地完成本次課程設(shè)計(jì),在此我對(duì)幫助過(guò)我的老師和同學(xué)表示真心的感謝。</p><p><b> 參考文獻(xiàn)</b></p>&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于fpga的浮點(diǎn)運(yùn)算器設(shè)計(jì)
- 基于fpga的浮點(diǎn)運(yùn)算器設(shè)計(jì)
- 基于FPGA的浮點(diǎn)運(yùn)算器設(shè)計(jì).pdf
- 組成原理課程設(shè)計(jì)--計(jì)算機(jī)簡(jiǎn)單模型設(shè)計(jì)——運(yùn)算器
- 課程設(shè)計(jì)---稀疏矩陣加法運(yùn)算器
- 數(shù)電課程設(shè)計(jì)報(bào)告---運(yùn)算器
- 數(shù)字邏輯與數(shù)字系統(tǒng)課程設(shè)計(jì)(簡(jiǎn)單計(jì)算器)
- 基于FPGA的RSA模冪運(yùn)算器設(shè)計(jì).pdf
- 數(shù)字邏輯與數(shù)字系統(tǒng)課程設(shè)計(jì)(簡(jiǎn)單計(jì)算器)
- 課程設(shè)計(jì)--設(shè)計(jì)一個(gè)矩陣運(yùn)算器
- 基于FPGA浮點(diǎn)運(yùn)算器的研究.pdf
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--基本稀疏矩陣運(yùn)算的運(yùn)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--稀疏矩陣運(yùn)算器
- 基于FPGA的橢圓曲線(xiàn)點(diǎn)乘運(yùn)算器設(shè)計(jì)研究.pdf
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告--稀疏矩陣運(yùn)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--稀疏矩陣運(yùn)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 稀疏矩陣運(yùn)算器
- 運(yùn)算器的設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 稀疏矩陣運(yùn)算器設(shè)計(jì)
- 數(shù)字邏輯課程設(shè)計(jì) ----數(shù)字記步器
評(píng)論
0/150
提交評(píng)論