版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計(jì)--2位十進(jìn)制四則運(yùn)算器電路
- eda課程設(shè)計(jì)之2位十進(jìn)制四則運(yùn)算器電路四則運(yùn)算器
- eda課程設(shè)計(jì)--2位十進(jìn)制四則運(yùn)算器電路
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--《十進(jìn)制表達(dá)式四則運(yùn)算》
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)—十進(jìn)制四則運(yùn)算計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)
- 課程設(shè)計(jì) 長整數(shù)四則運(yùn)算
- 課程設(shè)計(jì) 長整數(shù)四則運(yùn)算
- eda課程設(shè)計(jì)---十進(jìn)制加法計(jì)數(shù)器
- eda課程設(shè)計(jì)--十進(jìn)制加法計(jì)數(shù)器
- 大整數(shù)的四則運(yùn)算課程設(shè)計(jì)
- eda課程設(shè)計(jì)--八位十進(jìn)制頻率計(jì)
- 二進(jìn)制與十進(jìn)制數(shù)間的轉(zhuǎn)換、二進(jìn)制數(shù)的四則運(yùn)算
- 二進(jìn)制的四則運(yùn)算
- eda課程設(shè)計(jì)--十進(jìn)制加法器
- 1 四則運(yùn)算 2、四則混合運(yùn)算(有括號(hào))
- 匯編語言課程設(shè)計(jì)--四則運(yùn)算計(jì)算器
- eda十進(jìn)制計(jì)數(shù)加法器課程設(shè)計(jì)
- c語言課程設(shè)計(jì)報(bào)告-長整數(shù)四則運(yùn)算
- c語言課程設(shè)計(jì)報(bào)告-長整數(shù)四則運(yùn)算
- 2位十進(jìn)制可加減計(jì)數(shù)器電路
評論
0/150
提交評論