數(shù)字邏輯與數(shù)字系統(tǒng)課程設(shè)計(簡單計算器)_第1頁
已閱讀1頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論