版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 簡單計算器</b></p><p><b> 一、設(shè)計分析</b></p><p><b> 1、功能描述</b></p><p> 設(shè)計一個簡單0-9數(shù)之間的加、減、乘法運算的計算器,,輸入和輸出均可以顯示在數(shù)碼管上。</p><p>&l
2、t;b> 2、實現(xiàn)工具</b></p><p> 1、用VHDL 語言文本形式輸入;</p><p> 2、maxplusII行語言編寫時序仿真和綜合。</p><p><b> 二、設(shè)計思想</b></p><p> 采用自頂向下的設(shè)計方式,分層進(jìn)行設(shè)計。設(shè)計分為五個模塊進(jìn)行;</p&
3、gt;<p> 計算器模塊、八位二進(jìn)制數(shù)轉(zhuǎn)化成8421BCD碼模塊,四選一數(shù)據(jù)選擇器模塊,七段顯示譯碼器模塊、模4計數(shù)器模塊、模8計數(shù)器塊、3—8譯碼器塊。頂層設(shè)計可以完全獨立于目標(biāo)器件芯片物理結(jié)構(gòu)的硬件描述語言。使用VHDL模型在所綜合級別上對硬件設(shè)計進(jìn)行說明、建模和仿真。</p><p><b> 1、頂層原原理框圖</b></p><p>
4、2、具體實現(xiàn) </p><p><b> 1、計算器模塊、</b></p><p> 2、八位二進(jìn)制數(shù)轉(zhuǎn)化成8421BCD碼模塊</p><p> 3、四選一數(shù)據(jù)選擇器模塊</p><p> 4、七段顯示譯碼器模塊</p><p><b> 5
5、、模4計數(shù)器模塊</b></p><p><b> 6、模8計數(shù)器塊</b></p><p><b> 7、3—8譯碼器塊</b></p><p><b> 三、設(shè)計過程</b></p><p><b> 1、建立工程</b></
6、p><p> 建立一個Project,命名為jiandanjisuanqi。將各個模塊生成的文件放在同一個文件夾下。</p><p><b> 2、文本輸入</b></p><p> 將各個模塊的VHDL代碼輸入,保存并綜合。</p><p><b> 3、仿真</b></p>&
7、lt;p> 建立各個模塊的gdf圖,設(shè)置輸入波形并仿真。</p><p><b> 4、頂層原理圖輸入</b></p><p> 利用各個模塊生成的sym文件建立頂層原理圖,編譯并仿真。</p><p><b> 5、硬件實現(xiàn)</b></p><p> 實驗室提供的器件為FLEX10
8、K,型號為EPF10K10LC84-4,將文件下載到器件當(dāng)中,在實驗箱中進(jìn)行模擬。</p><p><b> 四、 整體框圖</b></p><p> 五、VHDL部分代碼及說明</p><p><b> 1、計算器模塊、</b></p><p> library IEEE;</p&g
9、t;<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 jisuanqi is </p><p> Port
10、(a,b: in STD_LOGIC_VECTOR (3 downto 0);</p><p> sel:in STD_LOGIC_VECTOR (1 downto 0); -----加減乘控制端</p><p> s: out STD_LOGIC_VECTOR (7 downto 0));</p><p> end jisuanqi;</p&g
11、t;<p> architecture Behavioral of jisuanqi is</p><p> signal q1 ,q2: STD_LOGIC_VECTOR (3 downto 0); </p><p> signal q3: STD_LOGIC_VECTOR (7 downto 0);</p><p> sign
12、al q4: STD_LOGIC_VECTOR (1 downto 0);</p><p><b> begin</b></p><p><b> q1<=a;</b></p><p> q2<=b;
13、
14、 </p><p><b> q4<=sel;</b></p><p> process(q4,q3)
15、 </p><p><b> begin</b></p><p> case q4 is</p><p> when "00" => ----加減乘算法</p><p> q3<=q1+q2;<
16、;/p><p><b> s<=q3;</b></p><p> when "01" =></p><p> if(q1>q2)then</p><p> q3<= q1-q2;</p><p><b> s<=q3;</b&
17、gt;</p><p><b> else </b></p><p> q3<=q2-q1;</p><p><b> s<=q3;</b></p><p><b> end if;</b></p><p> when "
18、10"=></p><p> q3<=q1*q2;</p><p><b> s<=q3;</b></p><p> when "11"=></p><p> q3<=q1*q2;</p><p><b> s<
19、=q3;</b></p><p> when others=></p><p> q3<="00000000";</p><p><b> s<=q3;</b></p><p><b> end case;</b></p>&l
20、t;p> end process;</p><p> end Behavioral;</p><p> 2、八位二進(jìn)制數(shù)轉(zhuǎn)化成8421BCD碼模塊</p><p> library IEEE;</p><p> use IEEE.STD_LOGIC_1164.ALL;</p><p> use IEE
21、E.STD_LOGIC_ARITH.ALL;</p><p> use IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> entity bcd is </p><p> Port (s : in STD_LOGIC_VECTOR (7 downto 0);</p><p> a : out STD_LO
22、GIC_VECTOR (3 downto 0);</p><p> b : out STD_LOGIC_VECTOR (3 downto 0));</p><p><b> end bcd;</b></p><p> architecture Behavioral of bcd is</p><p> sign
23、al q0: STD_LOGIC_VECTOR (7 downto 0);</p><p> signal q1: STD_LOGIC_VECTOR (3 downto 0);</p><p> signal q2: STD_LOGIC_VECTOR (3 downto 0);</p><p><b> begin</b></p&g
24、t;<p> process(s)</p><p><b> begin</b></p><p><b> q0<=s;</b></p><p> case q0 is ----把八位二進(jìn)制數(shù)轉(zhuǎn)化為8421BCD碼</p><p>
25、; when"00000000"=></p><p> q1<="0000";q2<="0000";</p><p> when"00000001"=></p><p> q1<="0000";q2<="0001&
26、quot;;</p><p> when"00000010"=></p><p> q1<="0000";q2<="0010";</p><p> when"00000011"=> </p><p> …………………………….<
27、;/p><p> 3、四選一數(shù)據(jù)選擇器模塊</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_signed.all;</p><p> entity mux4_1 is</p>
28、;<p><b> port(</b></p><p> d0,d1,d2,d3 :in std_logic_vector(3 downto 0);</p><p> q :out std_logic_vector(3 downto 0);</p><p> sel :in std_logic_vector(1 downt
29、o 0) );</p><p> end mux4_1;</p><p> architecture rtl of mux4_1 is</p><p><b> begin</b></p><p> process(sel)</p><p> begin
30、 ------實現(xiàn)從四個數(shù)據(jù)中選擇一個出來</p><p> if(sel = "00") then</p><p><b> q<=d0;</b></p><p> elsif(sel = "01")then</p><p><b> q&l
31、t;=d1;</b></p><p> elsif(sel = "10")then</p><p><b> q<=d2;</b></p><p> elsif(sel = "11")then</p><p><b> q<=d3;<
32、/b></p><p><b> end if;</b></p><p> end process;</p><p><b> end rtl;</b></p><p> 4、七段顯示譯碼器模塊</p><p> library ieee;</p>
33、<p> use ieee.std_logic_1164.all;</p><p> entity bcd_7dis is</p><p> port (bcdm: in std_logic_vector(3 downto 0);</p><p> a,b,c,d,e,f,g : out std_logic);</p><p
34、> end bcd_7dis;</p><p> architecture art of bcd_7dis is</p><p> signal w : std_logic_vector(6 downto 0);</p><p><b> begin</b></p><p> process(bcdm)&
35、lt;/p><p><b> begin</b></p><p> a<=w(6);b<=w(5);c<=w(4);d<=w(3);e<=w(2);f<=w(1);g<=w(0);</p><p> case bcdm is -----實現(xiàn)8421碼轉(zhuǎn)化為2進(jìn)制碼的轉(zhuǎn)換</p>
36、<p> when "0000" =>w<="1111110";</p><p> when "0001" =>w<="0110000";</p><p> when "0010" =>w<="1101101";<
37、/p><p> when "0011" =>w<="1111001";</p><p> when "0100" =>w<="0110011";</p><p> when "0101" =>w<="1011011&qu
38、ot;;</p><p> when "0110" =>w<="1011111";</p><p> when "0111" =>w<="1110000";</p><p> when "1000" =>w<="11
39、11111";</p><p> when "1001" =>w<="1111011";</p><p> when "1100" =>w<="0000001";</p><p> when others =>w<="0000
40、000";</p><p><b> end case;</b></p><p> end process;</p><p><b> end art;</b></p><p><b> 5、模4計數(shù)器模塊</b></p><p>
41、library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_signed.all;</p><p> entity mo4 is</p><p><b> port(</b></p><p>
42、; q :out std_logic_vector(1 downto 0);</p><p> clk :in std_logic);</p><p><b> end mo4;</b></p><p> architecture rtl of mo4 is</p><p> signal qcl : std_
43、logic_vector(1 downto 0);</p><p><b> begin</b></p><p> process(clk) </p><p> begin ----實現(xiàn)模為4的計數(shù)</p><p> if(clk&
44、#39;event and clk = '1')then </p><p> if(qcl = "11")then</p><p> qcl <= "00";</p><p><b> else</b></p><p> qcl <= qcl +
45、 '1';</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> q <= qcl;</b></p><p> end process;</p><p>
46、;<b> end rtl;</b></p><p><b> 6、模8計數(shù)器塊</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.al
47、l;</p><p> entity count_8 is</p><p> port( clk:in std_logic;</p><p> ql :out std_logic_vector(2 downto 0));</p><p> end count_8;</p><p> architecture
48、rt1 of count_8 is</p><p> signal qcl:std_logic_vector(2 downto 0);</p><p><b> begin </b></p><p> process(clk)</p><p> begin
49、 ---- 實現(xiàn)模8的計數(shù)</p><p> if(clk'event and clk='1') then</p><p> if (qcl="111") then </p><p> qcl<="000";</p><p><b> else <
50、/b></p><p> qcl<=qcl+'1';</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> ql<=qcl;</b></p><
51、p> end process;</p><p><b> end rt1;</b></p><p><b> 7、3—8譯碼器塊</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p>&
52、lt;p> entity decode3_8 is</p><p> port(d :in std_logic_vector(2 downto 0);</p><p> y :out std_logic_vector(7 downto 0));</p><p> end decode3_8 ;</p><p> archi
53、tecture rt1 of decode3_8 is</p><p><b> begin </b></p><p> process(d)</p><p><b> begin </b></p><p> case d is ------
54、實現(xiàn)3對8的譯碼</p><p> when "000"=>y<="10000000";</p><p> when "001"=>y<="01000000";</p><p> when "010"=>y<="00
55、100000";</p><p> when "011"=>y<="00010000";</p><p> when others=>y<="00000000";</p><p><b> end case;</b></p><
56、;p> end process;</p><p><b> end rt1;</b></p><p><b> 六、各模塊仿真結(jié)果</b></p><p><b> 1、計算器模塊</b></p><p> 2、八位二進(jìn)制數(shù)轉(zhuǎn)化成8421BCD碼模塊</p
57、><p> 3.、四選一數(shù)據(jù)選擇器模塊</p><p> 4、七段顯示譯碼器模塊</p><p><b> 5、模4計數(shù)器模塊</b></p><p><b> 6、模8計數(shù)器塊</b></p><p><b> 7、3—8譯碼器塊</b><
58、/p><p><b> 8、整體仿真</b></p><p> 七、管腳鎖定及硬件實現(xiàn)</p><p><b> 1、管腳鎖定</b></p><p><b> 2、文件下載</b></p><p> 將 文件下載完后在硬件實驗箱中進(jìn)行仿真檢查。&
59、lt;/p><p><b> 八、總結(jié)</b></p><p><b> 1問題及改正</b></p><p> 經(jīng)過幾天的學(xué)習(xí)和上,,完成了文本的輸入形式簡單計算器的電路,在設(shè)計過程中出現(xiàn)了諸多問題。</p><p> 首先是對VHDL語言接觸的時間,小學(xué)期時間短,做課程設(shè)計感受很倉促,沒有過
60、多的時間去系統(tǒng)的學(xué)習(xí)這門課程。不像C++這門語言課程設(shè)計是先經(jīng)過了一個學(xué)期的學(xué)習(xí)再做的,那樣感覺起來能從最根本的原理入手,在逐步提高,收獲也較多。</p><p> 其次是實驗過程中解決問題的方法不多,實驗室不能上網(wǎng),無法從網(wǎng)上搜索解決的辦法,書上有些知識描述的也不是太清楚。</p><p> 最后是自己的原因,由于課程設(shè)計遇到的問題較多,自己沒能保持好一個良好的心態(tài),遇到問題很著急,
61、影響了問題的解決和思考。</p><p><b> 2、心得體會</b></p><p> 經(jīng)過幾天的課程設(shè)計獲益良多,有成功也有失敗,有喜悅也有著急,但學(xué)習(xí)只是一個過程,在這個過程中才能使我們積累經(jīng)驗和逐漸成熟,在今后的學(xué)習(xí)和生活當(dāng)中,要提高自己的分析問題和解決問題的能力,學(xué)會從不同的角度考慮問題。 </p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字邏輯與數(shù)字系統(tǒng)課程設(shè)計(簡單計算器)
- 數(shù)字邏輯電路課程課程設(shè)計--簡易加減計算器
- 數(shù)字邏輯電路課程課程設(shè)計--簡易加減計算器
- 計算器java課程設(shè)計--簡單計算器
- 數(shù)字邏輯與數(shù)字系統(tǒng)課程設(shè)計
- 簡單計算器課程設(shè)計
- 簡單計算器課程設(shè)計報告
- 簡單的計算器課程設(shè)計
- 課程設(shè)計---簡單的計算器
- vb課程設(shè)計--簡單計算器
- 簡單的計算器課程設(shè)計
- 簡單計算器課程設(shè)計報告
- 單片機課程設(shè)計--簡易數(shù)字計算器
- 課程設(shè)計--簡單計算器的設(shè)計
- 課程設(shè)計--簡單的計算器設(shè)計
- 課程設(shè)計--簡單計算器的設(shè)計
- 數(shù)字邏輯課程設(shè)計 ----數(shù)字記步器
- c++課程設(shè)計--簡單計算器
- 數(shù)字邏輯課程設(shè)計---基于fpga的簡單運算器
- c++課程設(shè)計--簡單計算器
評論
0/150
提交評論