版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 運(yùn)算器</b></p><p><b> 摘 要</b></p><p> 本設(shè)計(jì)是一個(gè)運(yùn)算器,包括頂層電路圖、運(yùn)算器模塊、按鍵模塊、控制信號(hào)模塊、修正模塊、顯示模塊幾大部分。該運(yùn)算器用Quartus II仿真軟件設(shè)計(jì)并測(cè)試功能正常,下載到試驗(yàn)箱驗(yàn)證成功。</p><p> 關(guān)鍵詞:頂層
2、電路,運(yùn)算器模塊,按鍵模塊,控制信號(hào)模塊,修正模塊,顯示模塊。</p><p><b> 目 錄</b></p><p><b> 前 言3</b></p><p> 第1章 系統(tǒng)原理7</p><p><b> 1.1系統(tǒng)功能7</b></p>&
3、lt;p><b> 1.2頂層電路7</b></p><p> 1.3系統(tǒng)設(shè)計(jì)原理8</p><p> 第2章 系統(tǒng)組成9</p><p><b> 2.1按鍵模塊9</b></p><p> 2.2控制信號(hào)模塊12</p><p> 2.3修正模
4、塊15</p><p> 2.4顯示模塊19</p><p> 2.5運(yùn)算器模塊23</p><p> 第三章 下載驗(yàn)證25</p><p> 3.1引腳鎖定設(shè)置25</p><p> 3.2 配置文件下載26</p><p> 3.3硬件測(cè)試26</p>
5、<p><b> 結(jié)論27</b></p><p><b> 謝辭28</b></p><p><b> 參考文獻(xiàn)29</b></p><p><b> 前 言</b></p><p> 世界上第一片F(xiàn)PGA由美國(guó)Xilinx公
6、司于1985年率先推出。進(jìn)入21世紀(jì)之后,以FPGA為核心的單片系統(tǒng)(SOC)和可編程系統(tǒng)(SOPC)有了顯著的發(fā)展,單片F(xiàn)PGA的集成規(guī)模已達(dá)到幾百萬(wàn)門,其工作速度已超過300MHz。FPGA在結(jié)構(gòu)上已經(jīng)實(shí)現(xiàn)了復(fù)雜系統(tǒng)所需要的主要功能,并將多種功能集成在一片F(xiàn)PGA器件中,如嵌入式存儲(chǔ)器、嵌入式乘法器、嵌入式處理器、高速I/O緩沖器、外置存儲(chǔ)器接口和實(shí)現(xiàn)數(shù)字信號(hào)處理的DSP等功能。</p><p> 隨著FP
7、GA性能的不斷完善,F(xiàn)PGA器件的種類日益豐富,受到世界范圍內(nèi)電子設(shè)計(jì)人員的普遍歡迎,并占據(jù)了較大的市場(chǎng),其生產(chǎn)廠家也由原來(lái)的Xilinx公司一家增加到Altera、Actel、lattice等十幾家公司。</p><p> Altera公司的主要產(chǎn)品有:屬于FPGA的FLEX、ACEX、APEX、Mercury、Excalibur、Stratix和Cyclone等系列;屬于CPLD的MAX和Classic系列
8、。開發(fā)工具有,被普遍認(rèn)為是最優(yōu)秀PLD 開發(fā)平臺(tái)之一的MAX+Plus II和支持APEX、Mercury、Excalibur、Stratix和Cyclone系列器件的Quartus II開發(fā)軟件。</p><p> Quartus II 是Altera公司的綜合性PLD/FPGA開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Langu
9、age)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。</p><p> 我的運(yùn)算器和電子表主要是用VHDL語(yǔ)言編寫,以Quartus II為依托,并下載到FPGA驗(yàn)證板驗(yàn)證功能成功,能夠初步完成簡(jiǎn)單的四種運(yùn)算和電子表的調(diào)節(jié)。</p><p> 隨著大規(guī)模集成電路技術(shù)和計(jì)算機(jī)技術(shù)的高速發(fā)展,在涉及通信、國(guó)防、工業(yè)自動(dòng)化、計(jì)算機(jī)設(shè)計(jì)與應(yīng)
10、用、儀器儀表等領(lǐng)域的電子系統(tǒng)設(shè)計(jì)工作中,F(xiàn)PGA技術(shù)的含量正以驚人的速度提升。電子類的新技術(shù)項(xiàng)目的開發(fā)也更多地依賴于FPGA技術(shù)的應(yīng)用,特別是隨著HDL等硬件描述語(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
11、On a Chip、System On a Programmerable Chip)。計(jì)算機(jī)和CPU的設(shè)計(jì)技術(shù)及其實(shí)現(xiàn)途徑進(jìn)入了一個(gè)全新的時(shí)代!不但如此,傳統(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)工作能力超過50臺(tái)DELL或IBM計(jì)算機(jī),或SUN Mi
12、crosystems 公司的服務(wù)器。該服務(wù)器的處理速度要比傳統(tǒng)服務(wù)器快50到300倍。我們知道,傳統(tǒng)的PC機(jī)及服務(wù)器通常采用諸如Intel公司的奔騰處理器或SUN公司的SPARC芯片作為中央處理單元,而Wincom Systems的這款產(chǎn)品卻沒有采用微處理器,而是由FPGA芯片驅(qū)動(dòng)。FPGA芯片的運(yùn)行速度雖比奔騰處理器慢,但可并行處理多項(xiàng)任務(wù),而微處理器一次僅能處理一項(xiàng)任務(wù)。因此,Wincom Systems的服務(wù)器只需配置幾個(gè)價(jià)格僅為
13、2000多美元的FPGA芯片,便可擊敗SUN公司的服務(wù)器或采用Intel處理器的計(jì)算機(jī)。</p><p> 50多年前,匈牙利數(shù)學(xué)家馮諾依曼提出了計(jì)算機(jī)的設(shè)計(jì)構(gòu)想:通過中央處理器從儲(chǔ)存器中存取數(shù)據(jù),并逐一處理各項(xiàng)任務(wù)。然而現(xiàn)在,卻采用FPGA取代傳統(tǒng)微處理器獲得了更高的性能,致使美國(guó)Xilinx公司的首席執(zhí)行官Willem Roelandts 認(rèn)為:“由馮諾依曼提出的電腦架構(gòu)已經(jīng)走到盡頭”,“可編程芯片將掀起下
14、一輪應(yīng)用高潮”。</p><p> FPGA芯片操作靈活,可以重復(fù)擦寫無(wú)限次,而微處理器均采用固定電路,只能進(jìn)行一次性設(shè)計(jì)。設(shè)計(jì)人員可通過改變FPGA中晶體管的開關(guān)狀態(tài)對(duì)電路進(jìn)行重寫,即重配置,從而盡管FPGA芯片的時(shí)鐘頻率要低于奔騰處理器,但是由于FPGA芯片可并行處理各種不同的運(yùn)算,所以可以完成許多復(fù)雜的任務(wù)。正如Willem Roelandts所說(shuō)的,“我們認(rèn)為下一代超級(jí)電腦將基于可編程邏輯器件”,他聲稱
15、,這種機(jī)器的功能比目前最大的超級(jí)電腦還要強(qiáng)大許多倍。EDA專家William Carter認(rèn)為,只要EDA開發(fā)工具的功能允許,將有無(wú)數(shù)的證據(jù)證明FPGA 具有這種神奇的能力,進(jìn)而實(shí)現(xiàn)基于FPGA的超級(jí)電腦的開發(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í)別之類的計(jì)算密集型安全應(yīng)用十分有用
16、。由此看來(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(Hardware Description Language)是EDA技術(shù)的另一重要組成部分,常見的HDL有:VHDL、Verilog HDL、System Verilog和SystemC。其中VHDL、Verilog在現(xiàn)在EDA設(shè)計(jì)中使用最多,也得到幾乎所有的主流EDA工具的支持。而后
17、兩種HDL 語(yǔ)言尚處于完善過程中。</p><p> VHDL語(yǔ)言具有很強(qiáng)的電路描述和建模能力,能從多個(gè)層次對(duì)數(shù)字系統(tǒng)進(jìn)行建模和描述,從而大大簡(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支持各種模
18、式的設(shè)計(jì)方法:自頂向下與自底向上或混合方法,在面對(duì)當(dāng)今許多電子產(chǎn)品生命周期縮短,需要多次重新設(shè)計(jì)以融入最新技術(shù)、改變工藝等方面, VHDL都表現(xiàn)了良好的適應(yīng)性。</p><p><b> 第1章 系統(tǒng)原理</b></p><p><b> 1.1 系統(tǒng)功能</b></p><p> 該系統(tǒng)是基于FPGA設(shè)計(jì)的簡(jiǎn)單運(yùn)
19、算器,可以實(shí)現(xiàn)-7到+7范圍內(nèi)的加、減、與、異或運(yùn)算。</p><p><b> 1.2 頂層電路</b></p><p> 1.3 系統(tǒng)設(shè)計(jì)原理</p><p> 該運(yùn)算器電路由按鍵、控制、修正、顯示、運(yùn)算五大模塊組成,實(shí)現(xiàn)加、減、與、異或運(yùn)算功能。首先按鍵模塊用以輸入數(shù)據(jù),通過控制模塊傳送到運(yùn)算器模塊進(jìn)行運(yùn)算,修正模塊對(duì)結(jié)果進(jìn)行修正,
20、最后顯示模塊實(shí)現(xiàn)把運(yùn)算過程顯示到LCD顯示器上。</p><p><b> 第2章 系統(tǒng)組成</b></p><p><b> 2.1 按鍵模塊</b></p><p> 2.1.1按鍵模塊VHDL實(shí)現(xiàn)</p><p> LIBRARY IEEE;</p><p>
21、 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 IS</p><p> PORT( EN : OU
22、T 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> KADD,KSUB,KAND,KXOR,KEQU :
23、 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 DOWNTO 0));</p>
24、;<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_LOGIC_VE
25、CTOR(3 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(KEYA,RSTN)</p><p><b> BEGIN</b></p><p> IF RSTN='0'THEN TA<="0000&quo
26、t;;</p><p> ELSIF(KEYA'EVENT AND KEYA='1')THEN</p><p><b> TA<=TA+1;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p>
27、<p> PROCESS(KEYB,RSTN)</p><p><b> BEGIN</b></p><p> IF RSTN='0'THEN TB<="0000";</p><p> ELSIF(KEYB'EVENT AND KEYB='1')THEN&l
28、t;/p><p><b> TB<=TB+1;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> PROCESS(RSTN,KADD)</p><p><b> BEGIN</b
29、></p><p> IF RSTN='0'THEN TKADD<='0';</p><p> ELSIF (KADD'EVENT AND KADD='1')THEN TKADD<='1';END IF;</p><p> END PROCESS;</p>
30、<p> PROCESS(RSTN,KSUB)</p><p><b> BEGIN</b></p><p> IF RSTN='0'THEN TKSUB<='0';</p><p> ELSIF (KSUB'EVENT AND KSUB='1')THEN T
31、KSUB<='1';END IF;</p><p> END PROCESS;</p><p> PROCESS(RSTN,KAND)</p><p><b> BEGIN</b></p><p> IF RSTN='0'THEN TKAND<='0';
32、</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
33、></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>
34、<p> PROCESS(RSTN,KEQU)</p><p><b> BEGIN</b></p><p> IF RSTN='0'THEN TKEQU<='0';</p><p> ELSIF (KEQU'EVENT AND KEQU='1')THEN TK
35、EQU<='1';END IF;</p><p> END PROCESS;</p><p> PROCESS(RSTN,CLK,TKADD,TKSUB,TKAND,TKXOR,TKEQU,TA,TB)</p><p><b> BEGIN</b></p><p> IF RSTN='
36、;0'THEN YSF<="00";EN<='0';XSYSF<="00100000";</p><p> ELSIF(CLK'EVENT AND CLK='1')THEN</p><p> IF TKADD='1'THEN YSF<="00&q
37、uot;;XSYSF<="00101011";A<=TA;B<=TB;END IF; </p><p> IF TKSUB='1'THEN YSF<="01";XSYSF<="00101101";A<=TA;B<=TB;END IF;</p><p> IF T
38、KAND='1'THEN YSF<="10";XSYSF<="00101010";A<=TA;C<=TB;END IF;</p><p> IF TKXOR='1'THEN YSF<="11";XSYSF<="00101111";A<=TA;D<=T
39、B;END IF;</p><p> IF TKEQU='1'THEN EN<='1';END IF;</p><p><b> END IF;</b></p><p> END PROCESS;</p><p> PROCESS(TA,TB,CLK)</p>
40、;<p><b> BEGIN</b></p><p> IF(CLK'EVENT AND CLK='1')THEN</p><p> CASE TA IS</p><p> WHEN"0000"=>XA<="00110000";</p>
41、;<p> WHEN"0001"=>XA<="00110001";</p><p> WHEN"0010"=>XA<="00110010";</p><p> WHEN"0011"=>XA<="00110011";&
42、lt;/p><p> WHEN"0100"=>XA<="00110100";</p><p> WHEN"0101"=>XA<="00110101";</p><p> WHEN"0110"=>XA<="00110110
43、";</p><p> WHEN"0111"=>XA<="00110111";</p><p> WHEN"1000"=>XA<="00111000";</p><p> WHEN"1001"=>XA<="
44、00111001";</p><p> WHEN"1010"=>XA<="01000001";</p><p> WHEN"1011"=>XA<="01000010";</p><p> WHEN"1100"=>XA<
45、;="01000011";</p><p> WHEN"1101"=>XA<="01000100";</p><p> WHEN"1110"=>XA<="01000101";</p><p> WHEN"1111"=&
46、gt;XA<="01000110";</p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p> CASE TB IS</p><p> WHEN"0000"=>XB<="
47、00110000";</p><p> WHEN"0001"=>XB<="00110001";</p><p> WHEN"0010"=>XB<="00110010";</p><p> WHEN"0011"=>XB<
48、;="00110011";</p><p> WHEN"0100"=>XB<="00110100";</p><p> WHEN"0101"=>XB<="00110101";</p><p> WHEN"0110"=&
49、gt;XB<="00110110";</p><p> WHEN"0111"=>XB<="00110111";</p><p> WHEN"1000"=>XB<="00111000";</p><p> WHEN"1001
50、"=>XB<="00111001";</p><p> WHEN"1010"=>XB<="01000001";</p><p> WHEN"1011"=>XB<="01000010";</p><p> WHEN&q
51、uot;1100"=>XB<="01000011";</p><p> WHEN"1101"=>XB<="01000100";</p><p> WHEN"1110"=>XB<="01000101";</p><p>
52、 WHEN"1111"=>XB<="01000110";</p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p><b> END IF;</b></p><p>
53、 END PROCESS;</p><p><b> END ARCH;</b></p><p> 2.1.2 按鍵模塊仿真波形圖</p><p> 2.1.3按鍵模塊封裝圖</p><p><b> 2.1.4模塊功能</b></p><p> 該模塊實(shí)現(xiàn)的是按
54、鍵輸入,通過按鍵的輸入可以實(shí)現(xiàn)輸入加減,與和異或的運(yùn)算符號(hào),以及A和B的值。</p><p> 2.2 控制信號(hào)模塊</p><p> 2.2.1 控制信號(hào)模塊VHDL實(shí)現(xiàn)</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p>
55、 USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY CP3 IS</p><p> PORT ( RSTN,CLK:IN STD_LOGIC;</p><p> CP,CPT,CPMUX:BUFFER ST
56、D_LOGIC;</p><p> SADD,SSUB,SAND,SXOR:OUT STD_LOGIC_VECTOR(1 DOWNTO 0));</p><p><b> END CP3;</b></p><p> ARCHITECTURE BEHAVIORAL OF CP3 IS</p><p> TYPE S
57、TATE1 IS(S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11);</p><p> SIGNAL PRES1,NXS1:STATE1;</p><p> TYPE STATE2 IS(SS0,SS1,SS2,SS3);</p><p> SIGNAL PRES2,NXS2:STATE2;</p><p>
58、<b> BEGIN</b></p><p> PROCESS(CLK,RSTN)</p><p><b> BEGIN</b></p><p> IF (RSTN='0')THEN PRES1<=S0;</p><p> ELSIF(CLK'EVENT AN
59、D CLK='1')THEN</p><p> PRES1<=NXS1;</p><p><b> END IF;</b></p><p> END PROCESS;</p><p> PROCESS(PRES1)</p><p><b> BEGIN&l
60、t;/b></p><p> CASE PRES1 IS</p><p><b> WHEN S0=></b></p><p> CP<='1';CPMUX<='0';CPT<='0';NXS1<=S1;</p><p><b
61、> WHEN S1=></b></p><p> CP<='0';CPMUX<='0';CPT<='0';NXS1<=S2;</p><p><b> WHEN S2=></b></p><p> CP<='0';
62、CPMUX<='1';CPT<='0';NXS1<=S3;</p><p><b> WHEN S3=></b></p><p> CP<='1';CPMUX<='1';CPT<='0';NXS1<=S4;</p><
63、p><b> WHEN S4=></b></p><p> CP<='1';CPMUX<='0';CPT<='0';NXS1<=S5;</p><p><b> WHEN S5=></b></p><p> CP<=
64、39;0';CPMUX<='0';CPT<='0';NXS1<=S6;</p><p><b> WHEN S6=></b></p><p> CP<='0';CPMUX<='1';CPT<='0';NXS1<=S7;</p
65、><p><b> WHEN S7=></b></p><p> CP<='1';CPMUX<='1';CPT<='0';NXS1<=S8;</p><p><b> WHEN S8=></b></p><p>
66、 CP<='1';CPMUX<='1';CPT<='0';NXS1<=S9;</p><p><b> WHEN S9=></b></p><p> CP<='0';CPMUX<='1';CPT<='1';NXS1<
67、=S10;</p><p> WHEN S10=></p><p> CP<='0';CPMUX<='1';CPT<='1';NXS1<=S11;</p><p> WHEN S11=></p><p> CP<='1';CPMU
68、X<='1';CPT<='1';NXS1<=S11;</p><p><b> END CASE;</b></p><p> END PROCESS;</p><p> PROCESS(CP,RSTN)</p><p><b> BEGIN</b&
69、gt;</p><p> IF(RSTN='0')THEN PRES2<=SS0;</p><p> ELSIF(CP'EVENT AND CP='0')THEN</p><p> PRES2<=NXS2;</p><p><b> END IF;</b><
70、;/p><p> END PROCESS;</p><p> PROCESS(PRES2)</p><p><b> BEGIN</b></p><p> CASE PRES2 IS</p><p> WHEN SS0=></p><p> SADD<=
71、"00";SSUB<="00";SAND<="00";SXOR<="00";</p><p> NXS2<=SS1;</p><p> WHEN SS1=></p><p> SADD<="01";SSUB<="
72、;00";SAND<="00";SXOR<="00";</p><p> NXS2<=SS2;</p><p> WHEN SS2=></p><p> SADD<="00";SSUB<="01";SAND<="10&q
73、uot;;SXOR<="11";</p><p> NXS2<=SS3;</p><p> WHEN SS3=></p><p> SADD<="00";SSUB<="01";SAND<="10";SXOR<="11";
74、</p><p> NXS2<=SS3;</p><p> END CASE ;</p><p> END PROCESS;</p><p> END BEHAVIORAL;;</p><p> 2.2.2 控制信號(hào)模塊仿真波形</p><p> 2.2.3 控制信號(hào)模塊封裝圖
75、</p><p> 2.2.4 模塊功能</p><p> . 該模塊控制信號(hào)產(chǎn)生的四種運(yùn)算。CPMUX是將輸入數(shù)字寄存與按鍵模塊,在CP上升沿輸入到運(yùn)算器,當(dāng)CPT=0時(shí)開始計(jì)算。這里實(shí)現(xiàn)的是A+B結(jié)果送入A,A-B的結(jié)果送入B,A與C的結(jié)果送入C,A異或D的結(jié)果送入D。</p><p><b> 2.3 修正模塊</b></
76、p><p> 2.3.1 修正模塊VHDL實(shí)現(xiàn)</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_UNSIG
77、NED.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_LOGIC;</p><p>
78、 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 XZJG;</b></p>
79、<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><b> BEGIN</b>
80、;</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 & COUT;</p>
81、<p><b> END IF;</b></p><p> END PROCESS;</p><p> PROCESS(OC,CLK)</p><p><b> BEGIN</b></p><p> IF(RSTN='0')THEN</p><
82、p> TH<="0000";TL<="0000";</p><p> ELSIF(CLK'EVENT AND CLK='1')THEN</p><p> CASE OC IS </p><p> WHEN "00"=>TH<="0000
83、";</p><p> CASE T IS </p><p> WHEN"0000"=>TL<="0000";FH<="00101011";</p><p> WHEN"0001"=>TL<="0001";FH<=&
84、quot;00101011";</p><p> WHEN"0010"=>TL<="0010";FH<="00101011";</p><p> WHEN"0011"=>TL<="0011";FH<="00101011";
85、</p><p> WHEN"0100"=>TL<="0100";FH<="00101011";</p><p> WHEN"0101"=>TL<="0101";FH<="00101011";</p><p>
86、; WHEN"0110"=>TL<="0110";FH<="00101011";</p><p> WHEN"0111"=>TL<="0111";FH<="00101011";</p><p> WHEN"1000&qu
87、ot;=>TL<="1000";FH<="00101101";</p><p> WHEN"1001"=>TL<="0111";FH<="00101101";</p><p> WHEN"1010"=>TL<="
88、;0110";FH<="00101101";</p><p> WHEN"1011"=>TL<="0101";FH<="00101101";</p><p> WHEN"1100"=>TL<="0100";FH<=&
89、quot;00101101";</p><p> WHEN"1101"=>TL<="0011";FH<="00101101";</p><p> WHEN"1110"=>TL<="0010";FH<="00101101";
90、</p><p> WHEN"1111"=>TL<="0001";FH<="00101101";</p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p> WH
91、EN "01"=>TH<="0000";</p><p> CASE T IS </p><p> WHEN"0000"=>TL<="0000";FH<="00101011";</p><p> WHEN"0001&qu
92、ot;=>TL<="0001";FH<="00101011";</p><p> WHEN"0010"=>TL<="0010";FH<="00101011";</p><p> WHEN"0011"=>TL<="
93、;0011";FH<="00101011";</p><p> WHEN"0100"=>TL<="0100";FH<="00101011";</p><p> WHEN"0101"=>TL<="0101";FH<=&
94、quot;00101011";</p><p> WHEN"0110"=>TL<="0110";FH<="00101011";</p><p> WHEN"0111"=>TL<="0111";FH<="00101011";
95、</p><p> WHEN"1000"=>TL<="1000";FH<="00101101";</p><p> WHEN"1001"=>TL<="0111";FH<="00101101";</p><p>
96、; WHEN"1010"=>TL<="0110";FH<="00101101";</p><p> WHEN"1011"=>TL<="0101";FH<="00101101";</p><p> WHEN"1100&qu
97、ot;=>TL<="0100";FH<="00101101";</p><p> WHEN"1101"=>TL<="0011";FH<="00101101";</p><p> WHEN"1110"=>TL<="
98、;0010";FH<="00101101";</p><p> WHEN"1111"=>TL<="0001";FH<="00101101";</p><p> WHEN OTHERS=>NULL; </p><p><b> END
99、 CASE;</b></p><p> WHEN"10"=>FH<="00101011";</p><p><b> CASE T IS</b></p><p> WHEN"1000"=>TH<="0000";TL<=
100、"1000";</p><p> WHEN"1001"=>TH<="0000";TL<="1001";</p><p> WHEN"1010"=>TH<="0001";TL<="0000";</p>
101、<p> WHEN"1011"=>TH<="0001";TL<="0001";</p><p> WHEN"1100"=>TH<="0001";TL<="0010";</p><p> WHEN"1101&q
102、uot;=>TH<="0001";TL<="0011";</p><p> WHEN"1110"=>TH<="0001";TL<="0100";</p><p> WHEN OTHERS=>NULL;</p><p>&l
103、t;b> END CASE;</b></p><p> WHEN"11"=>FH<="00101101";</p><p><b> CASE T IS</b></p><p> WHEN"0000"=>TH<="0001&q
104、uot;;TL<="0110";</p><p> WHEN"0001"=>TH<="0001";TL<="0101";</p><p> WHEN"0010"=>TH<="0001";TL<="0100"
105、;</p><p> WHEN"0011"=>TH<="0001";TL<="0011";</p><p> WHEN"0100"=>TH<="0001";TL<="0010";</p><p> WHEN
106、"0101"=>TH<="0001";TL<="0001";</p><p> WHEN"0110"=>TH<="0001";TL<="0000";</p><p> WHEN"0111"=>TH<=
107、"0000";TL<="1001";</p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p><b> END CASE;</b></p><p><b> E
108、ND IF;</b></p><p> END PROCESS;</p><p> PROCESS(RSTN,S,TH,TL,CLK)</p><p><b> BEGIN</b></p><p> IF(RSTN='0')THEN SH<="0000";SL
109、<="0000";</p><p> ELSIF(CLK'EVENT AND CLK='0')THEN</p><p> CASE S IS </p><p> WHEN"00"=>SH<=TH;SL<=TL;</p><p> WHEN"
110、;01"=>SH<=TH;SL<=TL;</p><p> WHEN"10"=>SH<="0000";SL<=T;</p><p> WHEN"11"=>SH<="0000";SL<=T; </p><p><b
111、> END CASE;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END BEHAVIORAL;</p><p> 2.3.2 修正模塊仿真波形</p><p><b> 正溢出波
112、形:</b></p><p><b> 負(fù)溢出波形:</b></p><p> 2.3.3 修正模塊封裝圖</p><p> 2.3.4 模塊功能 </p><p> 對(duì)結(jié)果的正、負(fù)溢出進(jìn)行修正的模塊。 </p><p><b> 2.4 顯示模塊</b>
113、;</p><p> 2.4.1 顯示模塊VHDL實(shí)現(xiàn)</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
114、_UNSIGNED.ALL;</p><p> ENTITY XIANSHI IS</p><p> PORT(CLK:IN STD_LOGIC;</p><p> R0:IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> R1,R2:IN STD_LOGIC_VECTOR(3 DOWNTO 0);&l
115、t;/p><p> R3,R4,R5: IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> RS:BUFFER STD_LOGIC;</p><p> RW:OUT STD_LOGIC;</p><p> EN:OUT STD_LOGIC;</p><p> CLK_OUT:BUF
116、FER STD_LOGIC;</p><p> D:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0));</p><p> END XIANSHI;</p><p> ARCHITECTURE BEHAVIORAL OF XIANSHI IS</p><p> TYPE XIANSHI IS ARRAY(0 TO
117、 31)OF STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> SIGNAL QX : XIANSHI :=((OTHERS=>"00100000"));</p><p> TYPE STATE IS (CLEAR,IDS,DLNF,DCB,DDRAM1,OUTDATA1,DDRAM2,OUTDATA2);</p>
118、<p> SIGNAL COUNT :STD_LOGIC_VECTOR(15 DOWNTO 0);</p><p> SIGNAL LCLK_OUT :STD_LOGIC;</p><p> SIGNAL COUNTS :INTEGER RANGE 0 TO 3000000:=0;</p><p> SIGNAL CURRENT_STATE
119、:STATE;</p><p> SIGNAL TEMPA :STD_LOGIC_VECTOR(4 DOWNTO 0):="00000";</p><p><b> BEGIN</b></p><p> PROCESS(CLK_OUT,CLK)</p><p><b> BEGIN&
120、lt;/b></p><p> IF(RISING_EDGE(CLK))THEN</p><p> COUNTS<=COUNTS+1;</p><p> IF(COUNTS=3000000)THEN</p><p> CLK_OUT<=NOT CLK_OUT;</p><p><b>
121、; END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> QX(2)<=R3;</p><p> QX(3)<=R4;</p><p> QX(4)<=R5;</p&g
122、t;<p> QX(5)<="00100000";</p><p> QX(6)<=R0;</p><p> QX(7)<="0011"&R1;</p><p> QX(8)<="0011"&R2;</p><p> P
123、ROCESS(CLK,LCLK_OUT)</p><p><b> BEGIN</b></p><p> IF(RISING_EDGE(CLK))THEN</p><p> COUNT<=COUNT+1;</p><p> IF(COUNT=0)THEN</p><p> LCLK
124、_OUT<=NOT LCLK_OUT;</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> EN<=LCLK_OUT;</p><p> PRO
125、CESS(LCLK_OUT,CURRENT_STATE)</p><p><b> BEGIN</b></p><p> IF RISING_EDGE(LCLK_OUT)THEN</p><p><b> RS<='0';</b></p><p><b> R
126、W<='0';</b></p><p> CASE CURRENT_STATE IS</p><p> WHEN CLEAR=></p><p> D<="00000001";</p><p> CURRENT_STATE<=DLNF;</p>&l
127、t;p> WHEN DLNF=></p><p> D<="00111000";</p><p> CURRENT_STATE<=IDS;</p><p> WHEN IDS=></p><p> D<="00000110";</p><
128、p> CURRENT_STATE<=DCB;</p><p> WHEN DCB=></p><p> D<="00001100";</p><p> CURRENT_STATE<=DDRAM1;</p><p> WHEN DDRAM1=></p><p&
129、gt; D<="10000000"+TEMPA(3 DOWNTO 0);</p><p> CURRENT_STATE<=OUTDATA1;</p><p> WHEN OUTDATA1=></p><p><b> RS<='1';</b></p><p&
130、gt; D<=QX(CONV_INTEGER(TEMPA));</p><p> TEMPA<=TEMPA+1;</p><p> IF TEMPA="10000"THEN</p><p> CURRENT_STATE<=DDRAM2;</p><p><b> ELSE</b&
131、gt;</p><p> CURRENT_STATE<=DDRAM1;</p><p><b> END IF;</b></p><p> WHEN DDRAM2=></p><p> D<="11000000"+TEMPA(3 DOWNTO 0);</p>&
132、lt;p> CURRENT_STATE<=OUTDATA2;</p><p> WHEN OUTDATA2=> RS<='1';</p><p> D<=QX(CONV_INTEGER(TEMPA));</p><p> TEMPA<=TEMPA+1;</p><p> IF
133、 TEMPA="00000"THEN</p><p> CURRENT_STATE<=DDRAM1;</p><p><b> ELSE </b></p><p> CURRENT_STATE<=DDRAM2;</p><p><b> END IF;</b>
134、</p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END BEHAVIORAL;<
135、;/p><p> 2.4.2 顯示模塊封裝圖</p><p> 2.4.3 模塊功能</p><p> 控制在LCD顯示屏上進(jìn)行顯示的部件。</p><p><b> 2.5 運(yùn)算器模塊</b></p><p> 2.5.1 運(yùn)算器模塊邏輯電路圖</p><p>
136、2.5.2 運(yùn)算器模塊封裝圖</p><p> 2.5.3 模塊功能</p><p> 進(jìn)行與、異或、加、減運(yùn)算的核心部件,是整個(gè)設(shè)計(jì)的心臟。</p><p><b> 第3章 下載驗(yàn)證</b></p><p> 3.1 引腳鎖定設(shè)置</p><p> 3.1.1 器件選擇</p
137、><p> 進(jìn)行器件選擇之前進(jìn)行一次全編譯,無(wú)誤后在菜單欄里選擇Assignment里的Device,按下圖選擇。</p><p> 圖 3-1 器件選擇</p><p> 3.1.2 引腳分配</p><p> 引腳分配如下圖,分配之后再進(jìn)行一次全編譯。</p><p> 圖 3-2 引腳分配</p&g
138、t;<p> 3.2 配置文件下載</p><p> 設(shè)置編程器選擇HardWare Setup里的USB-ByteBlasterMV,按下Start下載到試驗(yàn)板。</p><p> 圖 3-3 下載到試驗(yàn)板</p><p><b> 3.3 硬件測(cè)試</b></p><p> 試驗(yàn)板上有8個(gè)按鍵
139、,按照設(shè)計(jì)好的按鍵,分別為與、異或、加、減、運(yùn)算數(shù)、被運(yùn)算數(shù)、清零、等于。我們可對(duì)四種運(yùn)算進(jìn)行多次驗(yàn)證,以測(cè)試運(yùn)算器是否正常工作。</p><p><b> 結(jié)論</b></p><p> 本次設(shè)計(jì)為簡(jiǎn)單運(yùn)算器,運(yùn)算器可以進(jìn)行簡(jiǎn)單的加、減、與、異或四種運(yùn)算,還很許多方面需要完善。</p><p> 比如乘、除運(yùn)算都無(wú)法進(jìn)行,只能進(jìn)行一位十
140、進(jìn)制數(shù)的運(yùn)算等等,這些都需要我不斷的學(xué)習(xí)。這次設(shè)計(jì)中,有很多次下載驗(yàn)證不成功,我進(jìn)行了仔細(xì)的檢查,改寫代碼,終于成功完成設(shè)計(jì)。但設(shè)計(jì)的過程值得我們的關(guān)注。采用VHDL 編寫的程序,使對(duì)硬件了解很少的我也能完成一個(gè)初步能完成簡(jiǎn)單運(yùn)算器功能的設(shè)計(jì),而且硬件的設(shè)計(jì)軟件化,更加速了設(shè)計(jì)過程。相比復(fù)雜的電路圖而言,VHDL程序更加易懂,而且更容易修改,這體現(xiàn)了用VHDL語(yǔ)言設(shè)計(jì)電路的優(yōu)越性。</p><p> 通過這次課
141、程設(shè)計(jì),更加深刻理解了FPGA器件的開發(fā)過程,更加深刻的了解到FPGA的發(fā)展前景,相比單進(jìn)程但速度很高的微處理器而言,F(xiàn)PGA器件多進(jìn)程處理能力更強(qiáng)大,而且耗費(fèi)更低,設(shè)計(jì)可以隨時(shí)更改。</p><p> 正如美國(guó)Xilinx公司的首席執(zhí)行官Willem Roelandts 所說(shuō):“由馮諾依曼提出的電腦架構(gòu)已經(jīng)走到盡頭”,“可編程芯片將掀起下一輪應(yīng)用高潮”。基于FPGA開發(fā)的可編程器件將會(huì)在各種領(lǐng)域大規(guī)模應(yīng)用,而
142、且FPGA器件設(shè)計(jì)可更改,將會(huì)減少電子垃圾的產(chǎn)生,更加合理的利用資源。</p><p><b> 謝辭</b></p><p> 在本課題研究與設(shè)計(jì)的過程中,得到了洛陽(yáng)理工學(xué)院計(jì)算機(jī)與信息工程系鄒紅文老師的大力支持。同時(shí)網(wǎng)上的一些資料和書籍也為本課題研究和設(shè)計(jì)提供很好的借鑒,借此機(jī)會(huì)表示衷心感謝。</p><p><b> 參考
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)---稀疏矩陣加法運(yùn)算器
- 《數(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)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 稀疏矩陣運(yùn)算器設(shè)計(jì)
- 課程設(shè)計(jì)--設(shè)計(jì)一個(gè)矩陣運(yùn)算器
- 補(bǔ)碼一位乘法浮點(diǎn)運(yùn)算器--課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)-單片機(jī)課程設(shè)計(jì)論文-4位數(shù)加法運(yùn)算器的設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--稀疏矩陣運(yùn)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--基本稀疏矩陣運(yùn)算的運(yùn)算器
- 數(shù)字邏輯課程設(shè)計(jì)---基于fpga的簡(jiǎn)單運(yùn)算器
- 數(shù)電課程設(shè)計(jì)報(bào)告--交通控制器
- 數(shù)電課程設(shè)計(jì)報(bào)告---光電計(jì)數(shù)器設(shè)計(jì)
- 運(yùn)算器的設(shè)計(jì)
- 數(shù)電課程設(shè)計(jì)報(bào)告2
- eda課程設(shè)計(jì)--2位十進(jìn)制四則運(yùn)算器電路四則運(yùn)算器
- 組成原理課程設(shè)計(jì)--計(jì)算機(jī)簡(jiǎn)單模型設(shè)計(jì)——運(yùn)算器
- 數(shù)電課程設(shè)計(jì)報(bào)告--- 音樂彩燈控制器
- 數(shù)電四路搶答器課程設(shè)計(jì)報(bào)告
- 有理數(shù)運(yùn)算c課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論