eda課程設(shè)計(jì)--2位十進(jìn)制四則運(yùn)算器電路_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  《電子設(shè)計(jì)自動(dòng)化》</b></p><p><b>  課程設(shè)計(jì)</b></p><p>  題目: 2位十進(jìn)制四則運(yùn)算器電路 </p><p>  院(系) </p><p>  專 業(yè) </p>

2、<p>  屆 別 </p><p>  班 級(jí) </p><p>  學(xué) 號(hào) </p><p>  姓 名 </p><p>  任課老師

3、 </p><p><b>  摘要</b></p><p>  本次設(shè)計(jì)的目的是通過QuartusII軟件實(shí)現(xiàn)輸入兩個(gè)2位十進(jìn)制數(shù)(0~99),輸出它們的四則運(yùn)算(加減乘除)結(jié)果(發(fā)光二極管顯示運(yùn)算模式;調(diào)用LPM_MULT、LPM_CONSTANT及LPM_DIVIDE模塊)。實(shí)現(xiàn)的方法是利用四則運(yùn)算的規(guī)律進(jìn)行初步設(shè)計(jì),然后進(jìn)行調(diào)整和修改。最終結(jié)果要

4、求:隨機(jī)的輸入兩個(gè)數(shù),經(jīng)過加法、減法、乘法和除法的運(yùn)算,可以得到正確的運(yùn)算結(jié)果。</p><p>  主要分為4大部分:一、2位十進(jìn)制數(shù)模塊;二、加減乘除四則運(yùn)算四個(gè)小模塊;三、加減乘除四則運(yùn)算的選擇模塊;四、處理輸出結(jié)果的模塊。</p><p><b>  目 錄</b></p><p><b>  1 系統(tǒng)設(shè)計(jì)4</b&

5、gt;</p><p>  2 單元電路設(shè)計(jì) 5 </p><p><b>  3 軟件設(shè)計(jì) 5</b></p><p><b>  4 系統(tǒng)測試14</b></p><p><b>  5 結(jié)  論14</b></p><p><b>

6、;  6 參考文獻(xiàn)14</b></p><p><b>  1、系統(tǒng)設(shè)計(jì)</b></p><p><b>  設(shè)計(jì)要求:</b></p><p>  輸入兩個(gè)2位十進(jìn)制數(shù)(0~99),輸出它們的四則運(yùn)算(加減乘除)結(jié)果;發(fā)光二極管</p><p>  顯示運(yùn)算模式;可調(diào)用LPM_MUL

7、T及LPM_DIVIDE模塊。 </p><p><b>  系統(tǒng)設(shè)計(jì)方案:</b></p><p><b>  系統(tǒng)設(shè)計(jì)思路</b></p><p>  要完成2位十進(jìn)制四則運(yùn)算器電路,首先,需要生成2個(gè)兩位的十進(jìn)制數(shù),其次,需要加減乘除四個(gè)運(yùn)算,然后,四種運(yùn)算的選擇,最后,對輸出結(jié)果的處理。</p>&l

8、t;p>  2個(gè)2位十進(jìn)制模塊:法一,用兩個(gè)100進(jìn)制計(jì)數(shù)器構(gòu)成;法二,用4個(gè)10進(jìn)制計(jì)數(shù)器構(gòu)成。因?yàn)閍dd1模塊(后面詳細(xì)介紹)只有兩個(gè)輸入口,所以選擇法一比較方便。</p><p>  加減乘除四則運(yùn)算:①加法:寫一個(gè)加法程序,制成模塊,再分別取出它的各位、十位、百位。②減法:寫一個(gè)減法程序,用調(diào)用LPM的方法制成一個(gè)模塊,在分別取出它的各位、十位和符號(hào)位。③乘法:直接調(diào)用內(nèi)部LPM,制成乘法模塊。④除

9、法:直接調(diào)用內(nèi)部LPM,制成除法模塊。</p><p>  加減乘除運(yùn)算的選擇:寫一個(gè)4路選擇器,分別選擇加減乘除。</p><p>  對輸出結(jié)果的處理:寫一個(gè)程序,對應(yīng)不同選擇下的不同輸出,注意位數(shù)(加法:輸出在0~198之間,需3個(gè)LED燈來顯示;減法:輸出在0~99之間,需3個(gè)LED燈(其中一個(gè)符號(hào)位);乘法:輸出在0~9801之間,需4個(gè)LED燈;除法:輸出在0~99之間,需2個(gè)

10、LED燈。綜上可知,輸出一共需4個(gè)LED燈)。</p><p>  總體方案的論證與比較</p><p>  該方案能夠較好的實(shí)現(xiàn)本設(shè)計(jì)的功能。一些小模塊可以有不同做法。如:</p><p>  2位十進(jìn)制模塊:法一,用兩個(gè)100進(jìn)制計(jì)數(shù)器構(gòu)成;法二,用4個(gè)10進(jìn)制計(jì)數(shù)器構(gòu)成。因?yàn)閍dd1模塊(后面詳細(xì)介紹)只有兩個(gè)輸入口,所以選擇法一比較方便。</p>

11、<p>  加減乘除輸出結(jié)果的處理:要求出各個(gè)位的數(shù)。(假設(shè)輸出結(jié)果3位)法一:每次除以10,依次求出個(gè)位、十位、百位;法二:除以100,得百位,除以10得個(gè)位和十位。因?yàn)榉ǘ枰^多的LPM_DIVIDE和LPM_CONSTANT,所以,法一比較好。</p><p> ?。?)各功能塊的劃分與組成</p><p> ?。?)系統(tǒng)的工作原理</p><p&

12、gt;  對于隨機(jī)輸入的兩個(gè)數(shù),系統(tǒng)都會(huì)對其進(jìn)行加減乘除四則運(yùn)算,然后選擇加法、減法、乘法或除法來作為輸出,并驗(yàn)證其正確性。</p><p><b>  2、單元電路設(shè)計(jì)</b></p><p>  一、輸入單元(2個(gè)2位十進(jìn)制模塊)</p><p>  輸入單元設(shè)計(jì)中, 用VHDL語言來實(shí)現(xiàn)該功能,然后制成模塊。</p><

13、;p><b>  二、加法單元</b></p><p>  對兩個(gè)輸入的數(shù)進(jìn)行加法運(yùn)算,可用VHDL語言來實(shí)現(xiàn)該功能。其輸出結(jié)果在0~198之間,將其結(jié)果顯示在LED燈上,就需調(diào)用4個(gè)LPM_DIVIDE和4個(gè)LPM_CONSTANT來實(shí)現(xiàn)。</p><p><b>  三、減法單元</b></p><p>  對兩

14、個(gè)輸入的數(shù)進(jìn)行減法運(yùn)算,可用VHDL語言來實(shí)現(xiàn)。結(jié)果有正、負(fù)之分,“F”來</p><p>  表示負(fù)號(hào)。輸出范圍在0~99之間,需2個(gè)LPM_DIVIDE 和2個(gè)LPM_CONSTANT來將其結(jié)果顯示在LED燈上。</p><p><b>  四、乘法單元</b></p><p>  乘法單元可調(diào)用LPM_MULT模塊來實(shí)現(xiàn)。其輸出結(jié)果在0—

15、9801之間,需4個(gè)LPM_DIVIDE和4個(gè)LPM_CONSTANT來將其結(jié)果顯示在LED燈上。</p><p><b>  五、除法單元</b></p><p>  除法單元直接調(diào)用3個(gè)LPM_DIVIDE 和2個(gè)LPM_CONSTANT就可以實(shí)現(xiàn)其要求。</p><p><b>  選擇模式單元</b></p&

16、gt;<p>  用VHDL語言寫一個(gè)四路選擇器程序,然后制成模塊。</p><p><b>  七、輸出單元</b></p><p>  用VHDL語言寫一個(gè)程序可實(shí)現(xiàn)該功能,然后制成模塊。</p><p><b>  3、軟件設(shè)計(jì)</b></p><p>  一、軟件設(shè)計(jì)平臺(tái)和開發(fā)

17、工具</p><p>  在在Quartus II平臺(tái)中用VHDL語言編程和調(diào)試。并調(diào)用其Quartus II的內(nèi)部模塊來實(shí)現(xiàn)設(shè)計(jì)要求。</p><p><b>  二、程序原理圖</b></p><p> ?、倏偝绦驁D及其仿真波形</p><p><b> ?、谝话龠M(jìn)制模塊</b></p&g

18、t;<p><b>  其程序?yàn)椋?lt;/b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity t100 is&l

19、t;/p><p>  port(clk,rst,en:in std_logic;</p><p>  cq:out std_logic_vector(6 downto 0);</p><p>  cout:out std_logic);</p><p><b>  end t100;</b></p><p

20、>  architecture behav of t100 is</p><p><b>  begin</b></p><p>  process(clk,rst,en)</p><p>  variable cqi:std_logic_vector(6 downto 0);</p><p><b> 

21、 begin</b></p><p>  if rst ='1' then cqi:=(others =>'0');</p><p>  elsif clk'event and clk='0' then </p><p>  if en ='1' then </p>

22、<p>  if cqi<99 then cqi:=cqi+1;</p><p>  else cqi:=(others=>'0');</p><p><b>  end if ;</b></p><p><b>  end if;</b></p><p>

23、<b>  end if;</b></p><p>  if cqi=99 then cout<='1';</p><p>  else cout<='0'; </p><p><b>  END IF;</b></p><p><b>  c

24、q<=cqi;</b></p><p>  end process; </p><p>  end behav;</p><p><b>  仿真波形為:</b></p><p><b>  ③加法模塊</b></p><p><b> ?。?

25、)、add程序</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity add is </p><p><

26、;b>  port( </b></p><p>  shu1: in std_logic_vector(6 downto 0); </p><p>  shu2: in std_logic_vector(6 downto 0);</p><p>  shu_out: out std_logic_vector(7 downto 0)</p>

27、;<p><b>  ); </b></p><p><b>  end add;</b></p><p>  architecture behav of add is </p><p>  signal a,b:std_logic_vector(7 downto 0);</p><p&g

28、t;<b>  begin</b></p><p>  process(shu1,shu2)</p><p><b>  begin </b></p><p>  a<='0'&shu1;</p><p>  b<='0'&shu2;

29、</p><p>  shu_out<=a+b;</p><p>  end process;</p><p>  end behav;</p><p><b> ?。?)add1模塊</b></p><p><b> ?。?)有關(guān)說明</b></p>&

30、lt;p>  因?yàn)檩斎胧莾蓚€(gè)2位十進(jìn)制數(shù)(即輸入寬度是7字節(jié)[6..0]),所以輸出范圍為0~198(即輸出寬度為8字節(jié)[7..0]),之后除以100得百位,再除以10 的各位和十位。</p><p><b> ?、蹨p法</b></p><p><b>  (1)sub程序</b></p><p>  LIBRARY

31、 IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  entity sub is</p><p>  port(sub_in1, sub_in2: in std_logic_vector(6 do

32、wnto 0);</p><p>  flag: out std_logic;</p><p>  sub_out: out std_logic_vector(6 downto 0));</p><p>  end entity sub;</p><p>  architecture beh of sub is</p&g

33、t;<p><b>  begin</b></p><p>  process(sub_in1, sub_in2)</p><p><b>  begin</b></p><p>  if sub_in1>sub_in2 then</p><p>  flag <= 

34、9;1';sub_out <= sub_in1-sub_in2;</p><p><b>  else</b></p><p>  flag <= '0';sub_out <= sub_in2-sub_in1;</p><p><b>  end if;</b></p&g

35、t;<p>  end process;</p><p>  end architecture beh;</p><p><b> ?。?)sub1模塊</b></p><p><b>  (3)有關(guān)說明</b></p><p>  兩個(gè)百進(jìn)制數(shù)相減,最大為99,即輸出最多需要7字節(jié)。

36、flag是標(biāo)示位,兩數(shù)相減若為正數(shù),flag輸出為0;若為負(fù)數(shù),flag輸出為“F”。</p><p><b>  ④乘法</b></p><p><b> ?。?)mul1模塊</b></p><p><b>  (2)有關(guān)說明</b></p><p>  因?yàn)?9*99=9

37、801,所以輸出需14個(gè)字節(jié),即寬度為[13..0].共需4個(gè)lpm_divide。除以10得個(gè)位,再除以10的十位,然后除以10得百位,最后再除以10得千位。</p><p><b>  ⑤除法</b></p><p><b> ?。?)div1模塊</b></p><p><b> ?。?)有關(guān)說明</

38、b></p><p>  除法單元直接調(diào)用3個(gè)LPM_DIVIDE 和2個(gè)LPM_CONSTANT就可以實(shí)現(xiàn)其要求。</p><p><b>  ⑥選擇模塊</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p>&

39、lt;p>  use ieee.std_logic_unsigned.all;</p><p>  entity ct4 is</p><p>  port(CLK:IN STD_LOGIC;</p><p>  A:OUT STD_LOGIC_VECTOR(1 DOWNTO 0));</p><p><b>  END ct

40、4;</b></p><p>  architecture one of ct4 is</p><p>  SIGNAL B:STD_LOGIC_VECTOR(1 DOWNTO 0); </p><p><b>  begin</b></p><p>  process(CLK)</p>&l

41、t;p><b>  begin</b></p><p>  if CLK'event and CLK='1' THEN </p><p>  IF B<3 THEN B<=B+1; ELSE B<=(OTHERS=>'0');END IF ; </p><p>  END I

42、F; </p><p>  END PROCESS; </p><p><b>  A<=B;</b></p><p>  END ARCHITECTURE;</p><p><b> ?、咻敵瞿K</b></p><p><b> ?。?)輸出模塊

43、程序</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY cal4_mod IS</p><p>  PO

44、RT(mod_sel: IN STD_LOGIC_vector(1 downto 0); </p><p>  add_out1: IN STD_LOGIC_vector(3 downto 0);</p><p>  add_out2: IN STD_LOGIC_vector(3 downto 0);</p><p>  add_out3: IN STD

45、_LOGIC_vector(3 downto 0);</p><p>  flag: IN STD_LOGIC;</p><p>  sub_out1: IN STD_LOGIC_vector(3 downto 0);</p><p>  sub_out2: IN STD_LOGIC_vector(3 downto 0);</p><

46、p>  mul_out1: IN STD_LOGIC_vector(3 downto 0);</p><p>  mul_out2: IN STD_LOGIC_vector(3 downto 0);</p><p>  mul_out3: IN STD_LOGIC_vector(3 downto 0);</p><p>  mul_out4: IN S

47、TD_LOGIC_vector(3 downto 0);</p><p>  div_out1: IN STD_LOGIC_vector(3 downto 0);</p><p>  div_out2: IN STD_LOGIC_vector(3 downto 0);</p><p>  outmod: out std_logic_vector(3 do

48、wnto 0);</p><p>  outLED1: out STD_LOGIC_vector(3 downto 0);</p><p>  outLED2: out STD_LOGIC_vector(3 downto 0); </p><p>  outLED3: out STD_LOGIC_vector(3 downto 0);</p>

49、<p>  outLED4: out STD_LOGIC_vector(3 downto 0)); </p><p>  END cal4_mod;</p><p>  ARCHITECTURE bhv OF cal4_mod IS</p><p><b>  BEGIN</b></p><

50、;p>  process(mod_sel)</p><p><b>  begin</b></p><p>  case mod_sel is</p><p>  when "00" => outmod<="1000"; outLED1<=(others=>'0

51、9;); outLED2<=add_out3; outLED3<=add_out2; outLED4<=add_out1;</p><p>  when "01" => outmod<="0100"; outLED1<=(others=>'0'); outLED2<=(others=>(not flag

52、)) ; outLED3<=sub_out2; outLED4<=sub_out1;</p><p>  when "10" => outmod<="0010"; outLED1<=mul_out4; outLED2<=mul_out3;outLED3<=mul_out2; outLED4<=mul_out1;</p&g

53、t;<p>  when others => outmod<="0001"; outLED1<=(others=>'0'); outLED2<=(others=>'0'); outLED3<=div_out2; outLED4<=div_out1;</p><p><b>  end cas

54、e;</b></p><p>  end process;</p><p><b>  end bhv;</b></p><p><b> ?。?)有關(guān)說明</b></p><p>  若四選一輸出為“00”時(shí),選擇加法運(yùn)算;輸出為“01”時(shí),選擇減法運(yùn)算:輸出為“10”時(shí),選擇乘法運(yùn)算

55、;輸出為“11”時(shí),選擇除法運(yùn)算。</p><p><b>  4、系統(tǒng)測試</b></p><p>  系統(tǒng)的功能測試及步驟:</p><p>  1、將制作好的的程序先進(jìn)行編譯,看是否能編譯通過,若未通過,則進(jìn)行修改直至編譯通過。</p><p>  2、編譯通過后,進(jìn)行波形仿真來觀察其結(jié)果是否正確。</p&g

56、t;<p>  3、進(jìn)行分配管腳,然后再編譯一次后。</p><p>  4、將編譯通過的程序下載到實(shí)驗(yàn)箱上進(jìn)行結(jié)果驗(yàn)證。(選擇模式5, 采用EP2CT144C8芯片)</p><p> ?、儆赡J?和管腳分配可知:鍵8—clk1(第一個(gè)輸入數(shù)),鍵7--clk2(第二個(gè)輸入數(shù)),鍵6—clk3(選擇模式鍵),數(shù)碼管8和7,分別對應(yīng)第一個(gè)輸入數(shù)的高低位,數(shù)碼管6和5分別對應(yīng)第

57、二個(gè)輸入數(shù)的高低位,數(shù)碼管4、3、2、1依次為輸出的高低位,發(fā)光二極管D8、D7、D6、D5分別為加減乘除模式。</p><p>  ②隨即地按鍵8和鍵7(隨即輸入兩個(gè)2位十進(jìn)制數(shù)),然后,按鍵6選擇加法、減法、乘法、除法運(yùn)算模式,最后,驗(yàn)證結(jié)果。</p><p>  例如:當(dāng)輸入為24和50時(shí),選擇加法時(shí),LED燈顯示74,選擇減法時(shí),LED燈顯示F26,選擇乘法時(shí),LED燈顯示1200

58、,選擇除法時(shí),LED燈顯示0.</p><p><b>  5、結(jié)論</b></p><p>  本次設(shè)計(jì)能夠較好的完成設(shè)計(jì)的基本要求,即輸入兩個(gè)2位十進(jìn)制數(shù)(0~99),能夠輸出它們的四則運(yùn)算(加減乘除)結(jié)果;但是于某些地方還有待改進(jìn)。</p><p> ?。?)對輸出結(jié)果各個(gè)位在LED燈的處理。如加法模塊輸出需3個(gè)led燈,本設(shè)計(jì)先除以10

59、0取出百位,再除以10取出十位和各位,共需4個(gè)LPM_DIVIDE和4個(gè)LPM_CONSTANT,如果每次都除以10,通過余數(shù)依次取出各位、十位、百位,就不用需要那么多的LPM_DIVIDE和LPM_CONSTANT。</p><p> ?。?)本設(shè)計(jì)的rst端直接接地,若要復(fù)位需重新把程序?qū)氲綄?shí)驗(yàn)箱,比較麻煩。</p><p><b>  6、參考文獻(xiàn)</b>&l

溫馨提示

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

最新文檔

評論

0/150

提交評論