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>  專

2、 業(yè) </p><p>  屆 別 </p><p>  班 級 </p><p>  學(xué) 號 </p><p>  姓 名

3、 </p><p>  任課老師 </p><p><b>  摘要</b></p><p>  電子設(shè)計(jì)自動(dòng)化技術(shù)是將計(jì)算機(jī)技術(shù)應(yīng)用于電子設(shè)計(jì)過程的一門新技術(shù),即EDA技術(shù),它為電子系統(tǒng)的設(shè)計(jì)帶來了革命性的變化。其作為現(xiàn)代電子設(shè)計(jì)技術(shù)的核心,人們也越來越重視這方面的研究。在EDA工具軟件平臺

4、上,對以硬件描述語言HDL為系統(tǒng)邏輯描述手段完成的設(shè)計(jì)文件,自動(dòng)完成文件編譯、化簡、分割、綜合、布局布線以及邏輯優(yōu)化和仿真測試,直至實(shí)現(xiàn)既定的電子線路系統(tǒng)功能。</p><p>  本次設(shè)計(jì)是基于QuartusII 9.0來完成設(shè)計(jì),QuartusII是Altera提供的FPGA/CPLD開發(fā)集成環(huán)境,其設(shè)計(jì)工具完全支持VHDL、Verilog的設(shè)計(jì)流程;也可利用第三方的綜合工具,如Leonardo、Spectr

5、um、Synplify Por、FPGA ComplierII,并直接調(diào)用這些工具;同時(shí)還具備仿真功能。</p><p>  本次設(shè)計(jì)的目的是輸入兩個(gè)2位十進(jìn)制數(shù)(0~99),輸出它們的四則運(yùn)算(加減乘除)結(jié)果;調(diào)用LPM_MULT、LPM_CONSTANT及LPM_DIVIDE模塊。實(shí)現(xiàn)的方法是利用四則運(yùn)算的規(guī)律和原則進(jìn)行初步設(shè)計(jì),然后進(jìn)行調(diào)整和修改。經(jīng)過精心的設(shè)計(jì)和合理的規(guī)劃,最終完成設(shè)計(jì)的要求。即在設(shè)計(jì)的程

6、序中隨機(jī)的輸入兩個(gè)數(shù),經(jīng)過加法、減法、乘法和除法的運(yùn)算,可以得到正確的運(yùn)算結(jié)果。同時(shí)也驗(yàn)證了本次設(shè)計(jì)達(dá)到所有的設(shè)計(jì)要求。本設(shè)計(jì)的創(chuàng)新點(diǎn)在于,輸入數(shù)是十位和個(gè)位分開輸入,這樣操作更加簡便。</p><p><b>  1 系統(tǒng)設(shè)計(jì)3</b></p><p>  一、設(shè)計(jì)要求................................................

7、.................................................3</p><p>  二、系統(tǒng)設(shè)計(jì)方案.........................................................................................4</p><p>  2 單元電路設(shè)計(jì) 5 </p>&l

8、t;p>  加法單元.............................................................................................5</p><p>  減法單元......................................................................................

9、.......5</p><p>  乘法單元.............................................................................................5</p><p>  除法單元................................................................

10、.............................6</p><p><b>  3 軟件設(shè)計(jì) 6</b></p><p>  一、軟件設(shè)計(jì)平臺和開發(fā)工具..................................6</p><p>  二、各模塊程序設(shè)計(jì)....................................

11、.......6</p><p><b>  4 系統(tǒng)測試12</b></p><p>  系統(tǒng)的功能測試及步驟……………………………………………………………….12</p><p>  設(shè)計(jì)所采用的設(shè)備和型號……………………………………………………………12</p><p><b>  結(jié)  論13<

12、;/b></p><p><b>  參考文獻(xiàn)13</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é)果;可調(diào)用LPM_

13、MULT、LPM_CONSTANT及LPM_DIVIDE模塊。</p><p><b>  二、系統(tǒng)設(shè)計(jì)方案</b></p><p><b>  1、系統(tǒng)設(shè)計(jì)思路:</b></p><p>  據(jù)設(shè)計(jì)要求,本設(shè)計(jì)包含了三個(gè)部分,分別是輸入部分,計(jì)算部分和輸出部分。由輸入端輸入2個(gè)兩位數(shù)數(shù)據(jù)和計(jì)算模式,計(jì)算部分分別對這兩個(gè)數(shù)

14、據(jù)進(jìn)行加、減、乘、除計(jì)算,最后由輸出部分依據(jù)計(jì)算模式選擇對應(yīng)的結(jié)果輸出。</p><p>  依據(jù)計(jì)算結(jié)果我們可以知道在加法計(jì)算中,輸出在0—198之間,其結(jié)果要有3個(gè)LED燈來顯示;減法輸出需要3個(gè)LED燈顯示,其中一個(gè)LED為當(dāng)計(jì)算結(jié)果為負(fù)時(shí)用“F”代替“-”;乘法輸出需要有4個(gè)LED燈來顯示;除法輸出需要2個(gè)LED燈來顯示。從而可知,整體輸出應(yīng)該設(shè)計(jì)4個(gè)LED燈來顯示其結(jié)果。另加上顯示輸入的數(shù)也需要4個(gè)LE

15、D燈,所以實(shí)驗(yàn)箱滿足本設(shè)計(jì)要求。</p><p>  2、總體方案的論證與比較</p><p>  由輸入數(shù)據(jù)的不同方式,本設(shè)計(jì)有2種輸入方案,具體如下:</p><p><b>  方案一</b></p><p>  輸入端接一個(gè)由一百進(jìn)制的VHDL程序生成的原理圖文件,則輸入數(shù)據(jù)可直接應(yīng)用于四則運(yùn)算,但要將輸入在數(shù)碼

16、管上顯示,故需另做一個(gè)模塊來將該百進(jìn)制數(shù)顯示在數(shù)碼管上。</p><p><b>  方案二</b></p><p>  直接用兩個(gè)十進(jìn)制的模塊作為一個(gè)輸入,這樣輸入數(shù)就可以直接在數(shù)碼管顯示,但要在四則運(yùn)算中,要將其合成一個(gè)百進(jìn)制數(shù),可將其中一個(gè)十進(jìn)制數(shù)作為十位數(shù),另一個(gè)作為個(gè)位數(shù)。實(shí)現(xiàn)的方法是用一個(gè)十進(jìn)制數(shù)乘以10,,再加上另一個(gè)十進(jìn)制數(shù)就可以得到一個(gè)百進(jìn)制數(shù)。&l

17、t;/p><p>  本設(shè)計(jì)中采用了第二種方案,因?yàn)榈诙N方案較第一種方案在輸入數(shù)據(jù)效率方面有了明顯地提高,并且操作簡便,快捷。</p><p>  3、各功能塊的劃分與組成</p><p>  4、系統(tǒng)的工作的原理</p><p>  其工作原理是在輸入端隨機(jī)輸入兩個(gè)數(shù),然后在“選擇模式”的模塊上選擇加法、減法、乘法、除法,根據(jù)正常的四則運(yùn)算來

18、看其輸出端觀察期輸出結(jié)果,看其結(jié)果是否正確。</p><p><b>  2、單元電路的設(shè)計(jì)</b></p><p><b>  一、加法單元</b></p><p>  加法設(shè)計(jì)中,兩個(gè)輸入的數(shù)中,一個(gè)作為加數(shù),一個(gè)作為被加數(shù)將其相加,可以用VHDL語言來實(shí)現(xiàn)該功能。其輸出范圍在0—198之間,將其結(jié)果顯示在LED燈上,

19、就得運(yùn)用2個(gè)LPM_DIVIDE 和2個(gè)LPM_CONSTANT來實(shí)現(xiàn)。</p><p><b>  減法單元</b></p><p>  減法設(shè)計(jì)中,兩個(gè)輸入數(shù)中,一個(gè)作為減數(shù),一個(gè)作為被減數(shù)將其相減,也可以VHDL語言來實(shí)現(xiàn)。若被減數(shù)大于減數(shù),則正常輸出;若被減數(shù)小于減數(shù),則用“F”來表示負(fù)號。輸出結(jié)果在0—99之間,故需要1個(gè)LPM_DIVIDE 和1個(gè)LPM_

20、CONSTANT來將其結(jié)果顯示在LED燈上。</p><p><b>  乘法單元</b></p><p>  乘法設(shè)計(jì)中,可以調(diào)用LPM_MULT模塊來實(shí)現(xiàn)。其輸出結(jié)果在0—9801之間,故得用3個(gè)LPM_DIVIDE 和3個(gè)LPM_CONSTANT來將其結(jié)果顯示在LED燈上。</p><p><b>  除法單元</b>

21、;</p><p>  除法設(shè)計(jì)中,直接調(diào)用2個(gè)LPM_DIVIDE 和1個(gè)LPM_CONSTANT就可以實(shí)現(xiàn)其要求。</p><p><b>  軟件設(shè)計(jì)</b></p><p>  軟件設(shè)計(jì)平臺和開發(fā)工具</p><p>  在Quartus II平臺中用VHDL語言編程和調(diào)試。并調(diào)用其Quartus II中的原有的

22、模塊來實(shí)現(xiàn)設(shè)計(jì)要求。</p><p><b>  二、各模塊程序設(shè)計(jì)</b></p><p><b>  1、總電路原理圖</b></p><p>  2、十進(jìn)制模塊程序(CNT10)</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.ST

23、D_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY CNT10 IS</p><p>  PORT (CLK : IN STD_LOGIC; </p><p>  CQ : OUT STD_LOGIC

24、_VECTOR(3 DOWNTO 0); </p><p>  COUT : OUT STD_LOGIC ); </p><p>  END CNT10;</p><p>  ARCHITECTURE behav OF CNT10 IS</p><p><b>  BEGIN</b><

25、/p><p>  PROCESS(CLK)</p><p>  VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); </p><p>  BEGIN </p><p>  IF CLK'EVENT AND CLK='1' THEN </p

26、><p>  IF CQI < 9 THEN CQI := CQI + 1; --允許計(jì)數(shù), 檢測是否小于9 </p><p>  ELSE CQI := (OTHERS =>'0'); --大于9,計(jì)數(shù)值清零 </p><p><b>  END IF;</b>&

27、lt;/p><p>  END IF; </p><p>  IF CQI = 0 THEN COUT <= '1'; </p><p>  ELSE COUT <= '0';</p><p><b>  END IF;</b></p&g

28、t;<p>  CQ <= CQI; </p><p>  END PROCESS;</p><p>  END behav;</p><p>  3、輸入十位數(shù)乘10模塊程序(mulx10)</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LO

29、GIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY mulx10 IS</p><p>  PORT(b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  y:OUT STD_LOGIC_VECTOR(7 DOW

30、NTO 0));</p><p>  END mulx10;</p><p>  ARCHITECTURE behave OF mulx10 IS</p><p>  signal c0,c1,c2,c3:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  constant a:STD_LOGIC_VECTOR:=

31、"1010";</p><p><b>  BEGIN</b></p><p>  PROCESS(b,c0,c1,c2,c3)</p><p><b>  BEGIN</b></p><p>  IF b(0)='0' THEN c0<="000

32、0";ELSE c0<=a;end if;</p><p>  IF b(1)='0' THEN c1<="0000";ELSE c1<=a;end if;</p><p>  IF b(2)='0' THEN c2<="0000";ELSE c2<=a;end

33、 if;</p><p>  IF b(3)='0' THEN c3<="0000";ELSE c3<=a;end if;</p><p>  y<=("0000"& c0)+("000"& c1&'0')+("00"& c

34、2&"00")+('0'&c3&"000"); </p><p>  END PROCESS;</p><p>  END behave;</p><p>  原理:搞清二進(jìn)制數(shù)的乘法原理就可以設(shè)計(jì)兩個(gè)4位二進(jìn)制數(shù)相乘,如a=1010,b=1111 那么可以看成是1010*(1000+

35、0100+0010+0001),結(jié)果等于 將1010左移三位加上1010左移兩位,加上1010左移1位加上1010不移位 就是結(jié)果y<=("0000"& c0)+("000"& c1&'0')+("00"& c2&"00")+('0'&c3&"000&

36、quot;); 第一個(gè)是不移動(dòng) 第二個(gè)是b低二位與a相乘左移1位 第三是b低3位 與a相乘左移兩位,第四是b最高位與a相乘左移三位 結(jié)果相加</p><p>  4、位數(shù)調(diào)整模塊程序(yiwei3d6)</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><

37、;p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  entity yiwei3d6 is</p><p>  port(my_in1: in std_logic_vector(3 downto 0);</p><p>  my_out: out std_logic_vector(7 downto 0));<

38、;/p><p>  end entity yiwei3d6;</p><p>  architecture beh of yiwei3d6 is</p><p><b>  begin</b></p><p>  my_out(3 downto 0) <= my_in1(3 downto 0);</p>

39、<p>  end architecture beh;</p><p>  5、加法模塊(cal_add)</p><p><b>  add程序:</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><

40、;p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  entity add is</p><p>  port(my_in1, my_in2: in std_logic_vector(8 downto 0);</p><p>  my_out: out std_logic_vector(9 downto 0)

41、);</p><p>  end entity add;</p><p>  architecture beh of add is</p><p>  Signal a, b : std_logic_vector(9 downto 0);</p><p><b>  begin</b></p><p&

42、gt;  a <= '0'&my_in1;</p><p>  b <= '0'&my_in2;</p><p>  my_out <= a + b;</p><p>  end architecture beh;</p><p><b>  6、減法模塊</

43、b></p><p><b>  Sub程序:</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  en

44、tity sub is</p><p>  port(sub_in1, sub_in2: in std_logic_vector(8 downto 0);</p><p>  flag: out std_logic;</p><p>  sub_out: out std_logic_vector(8 downto 0));</p>

45、<p>  end entity sub;</p><p>  architecture beh of sub is</p><p><b>  begin</b></p><p>  process(sub_in1, sub_in2)</p><p><b>  begin</b><

46、;/p><p>  if sub_in1>sub_in2 then</p><p>  flag <= '1';sub_out <= sub_in1-sub_in2;</p><p><b>  else</b></p><p>  flag <= '0';sub_

47、out <= sub_in2-sub_in1;</p><p><b>  end if;</b></p><p>  end process;</p><p>  end architecture beh;</p><p><b>  7、乘法模塊</b></p><p&

48、gt;<b>  8、除法模塊</b></p><p><b>  9、選擇模塊</b></p><p>  選擇模式有加法、減法、乘法、除法四種形式,故選用四選一的程序來實(shí)現(xiàn)該功能。程序如下:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC

49、_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY CNT4 IS</p><p>  PORT (CLK : IN STD_LOGIC; </p><p>  CQ : OUT STD_LOGIC_VECTOR(

50、1 DOWNTO 0); </p><p>  COUT : OUT STD_LOGIC ); </p><p><b>  END CNT4;</b></p><p>  ARCHITECTURE behav OF CNT4 IS</p><p><b>  BEGIN</

51、b></p><p>  PROCESS(CLK)</p><p>  VARIABLE CQI : STD_LOGIC_VECTOR(1 DOWNTO 0); </p><p>  BEGIN </p><p>  IF CLK'EVENT AND CLK='1' THEN

52、 --檢測時(shí)鐘上升沿</p><p>  IF CQI < 3 THEN CQI := CQI + 1; --允許計(jì)數(shù), 檢測是否小于3 </p><p>  ELSE CQI := (OTHERS =>'0'); --大于3,計(jì)數(shù)值清零 </p><p><b> 

53、 END IF;</b></p><p>  END IF; </p><p>  IF CQI = 0 THEN COUT <= '1'; --計(jì)數(shù)大于3,輸出進(jìn)位信號</p><p>  ELSE COUT <= '0';</p><p>&l

54、t;b>  END IF;</b></p><p>  CQ <= CQI; --將計(jì)數(shù)值向端口輸出</p><p>  END PROCESS;</p><p>  END behav;</p><p><b>  輸出模塊</b></p><p>  若四選

55、一輸出為“00”時(shí),選擇運(yùn)算加法;輸出為“01”時(shí),運(yùn)算減法:輸出為“10”時(shí),選擇乘法;輸出為“11”時(shí),運(yùn)算除法。其程序如下:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p>&

56、lt;p>  ENTITY cal_mod IS</p><p><b>  PORT(</b></p><p>  add_out2 : IN STD_LOGIC_vector(9 downto 0);</p><p>  add_out1: IN STD_LOGIC_vector(6 downto 0);</p&g

57、t;<p>  add_out0 : IN STD_LOGIC_vector(3 downto 0);</p><p>  flag : IN STD_LOGIC;</p><p>  sub_out1 : IN STD_LOGIC_vector(8 downto 0);</p><p>  sub_out0 : IN STD_

58、LOGIC_vector(3 downto 0);</p><p>  mul_out3 : IN STD_LOGIC_vector(17 downto 0);</p><p>  mul_out2 : IN STD_LOGIC_vector(9 downto 0);</p><p>  mul_out1 : IN STD_LOGIC_vector(6 dow

59、nto 0);</p><p>  mul_out0 : IN STD_LOGIC_vector(3 downto 0);</p><p>  div_out1 : IN STD_LOGIC_vector(8 downto 0);</p><p>  div_out0 : IN STD_LOGIC_vector(3 downto 0);<

60、/p><p>  mod_sel: IN STD_LOGIC_vector(1 downto 0); </p><p>  outLED1: out STD_LOGIC_vector(3 downto 0);</p><p>  outLED2: out STD_LOGIC_vector(3 downto 0); </p><p> 

61、 outLED3: out STD_LOGIC_vector(3 downto 0);</p><p>  outLED4: out STD_LOGIC_vector(3 downto 0)); </p><p>  END cal_mod;</p><p>  ARCHITECTURE bhv OF cal_mod IS</p&g

62、t;<p><b>  BEGIN</b></p><p>  process(mod_sel)</p><p><b>  begin</b></p><p>  case mod_sel is</p><p>  when "00"=>outLED1<

63、;=(others=>'0'); outLED2<=add_out2(3 DOWNTO 0);outLED3<=add_out1(3 DOWNTO 0); outLED4<=add_out0;</p><p>  when "01"=>outLED1<=(others=>'0'); outLED2<=(others

64、=>(not flag));outLED3<=sub_out1(3 DOWNTO 0);outLED4<=sub_out0;</p><p>  when "10"=>outLED1<=mul_out3(3 downto 0);outLED2<=mul_out2(3 downto 0);outLED3<=mul_out1(3 downto 0);out

65、LED4<=mul_out0;</p><p>  when others =>outLED1<=(others=> '0'); outLED2<=(others=> '0'); outLED3<=div_out1(3 downto 0); outLED4<=div_out0;</p><p>  end ca

66、se; </p><p>  end process;</p><p><b>  end bhv;</b></p><p><b>  4 系統(tǒng)測試</b></p><p>  系統(tǒng)的功能測試及步驟:</p><p>  1、將制作好的的程序先進(jìn)行編譯,看是否能編譯通過,

67、若未通過,則進(jìn)行修改直至編譯通過。</p><p>  2、編譯通過后,可以進(jìn)行波形仿真來觀察其結(jié)果是否正確。</p><p>  3、進(jìn)行分配管腳,然后再編譯一次后。</p><p>  4、將編譯通過的程序下載到硬件上進(jìn)行結(jié)果驗(yàn)證。</p><p>  5、硬件上結(jié)果驗(yàn)證的操作步驟</p><p>  、本次我采用

68、了模式0作為演示的模式來驗(yàn)證本次設(shè)計(jì)。</p><p>  、根據(jù)管腳分配和模式0,鍵7—a1、鍵6—a0,鍵5—b1、鍵4—b0、鍵3—clk_mod</p><p>  、隨機(jī)按鍵輸入87和26,則可在數(shù)碼管上顯示113,按鍵3改變加法、減法、乘法、除法模式。當(dāng)模式為減法時(shí),其結(jié)果為61;當(dāng)模式為乘法時(shí),其結(jié)果為2262;當(dāng)模式為除法模式時(shí),其結(jié)果為3. </p><

69、;p>  二、設(shè)計(jì)所采用的設(shè)備和型號</p><p>  由世界上最大的可編程邏輯軟件供應(yīng)商之一的Altera提供的Quartus II來實(shí)現(xiàn)。芯片是EP2CT144C8.</p><p><b>  結(jié)論</b></p><p>  軟件仿真波形結(jié)果如下圖:</p><p>  由圖可知結(jié)果符合預(yù)期,本次設(shè)計(jì)很出

溫馨提示

  • 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

提交評論