版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> EDA課程設計報告</b></p><p> 設計課題:1、串入并出移位寄存器</p><p> 2、 譯碼器 </p><p> 3、 數(shù)字鐘 </p><p> 專業(yè)班級:電子信息工程08-1班</p><
2、;p><b> 串入并出移位寄存器</b></p><p><b> 一、設計任務與要求</b></p><p> 1.設計一個4位的串入并出移位寄存器; </p><p> 2.要求能分別輸入兩組4位數(shù)據(jù),同時輸出顯示。</p><p><b> 二、方案設計與論證<
3、;/b></p><p> 移位寄存器除了具有存儲代碼的功能以外,還具有移位功能。所謂移位功能,是指寄存器里存儲的代碼能在移位脈沖的作用下依次左移或右移。因此,移位寄存器不但可以用來寄存代碼,還可用來實現(xiàn)數(shù)據(jù)的串并轉換、數(shù)字的運算以及數(shù)據(jù)處理等。</p><p> 所謂的串入/并出移位寄存器, 即輸入的數(shù)據(jù)是一個接著一個有序地進入, 輸出時則一起送出。兩組數(shù)據(jù)伴隨著時鐘信號依次輸
4、入,輸出時消除延時。</p><p> 三、單元電路設計與參數(shù)計算</p><p><b> 程序代碼:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logi
5、c_arith.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity sipo is</p><p><b> port(</b></p><p> d_in:in std_logic;</p><p> clk:i
6、n std_logic;</p><p> d_out:out std_logic_vector(3 downto 0));</p><p><b> end sipo;</b></p><p> architecture a of sipo is</p><p> signal q:std_logic_vect
7、or(3 downto 0);</p><p><b> begin</b></p><p> p1:process(clk)</p><p><b> begin</b></p><p> if clk'event and clk='1'then</p>
8、<p> q(0)<=d_in;</p><p> for i in 1 to 3 loop</p><p> q(i)<=q(i-1);</p><p><b> end loop;</b></p><p><b> end if;</b></p>
9、<p> end process p1;</p><p><b> d_out<=q;</b></p><p><b> end a;</b></p><p> 四、總原理圖及元器件清單</p><p><b> 1.總原理圖</b></p&g
10、t;<p> 1.元件清單(或程序清單)</p><p><b> 五、安裝與調(diào)試</b></p><p> 輸入的數(shù)據(jù)為“1010” 、 “0111”兩組 4 位數(shù)據(jù)。因輸入的數(shù)據(jù)是每次一位依序進入,故輸入、輸出信號之間有 4 個 CLK 時間的延遲。為了過濾中間沒用的數(shù)據(jù),只讀取完整的存儲數(shù)據(jù),實用上可將取樣脈沖的周期設定成CLK 脈沖的四倍,
11、也就是說,每經(jīng)過 4 個CLK 脈沖后</p><p><b> 實驗連線 </b></p><p> 輸入信號D-IN(代表一位的串行數(shù)據(jù)輸入)和 CLK(代表抽樣時鐘信號) ,CLK 時鐘信號接適配器板子上的時鐘信號,頻率建議取在 1Hz 左右,D-IN 接撥碼開關或按鍵;輸出信號有D-OUT0~D-OUT3(代表 4位并行數(shù)據(jù)輸出) ,接發(fā)光二極管。<
12、/p><p><b> 六、性能測試與分析</b></p><p><b> 七、結論與心得</b></p><p> 當按順序依次輸入兩組4尾數(shù)據(jù)時,輸入端同時顯示出兩組數(shù)據(jù)。</p><p> 通過對串入并出移位寄存器的設計,更加認識到了移位寄存器的原理與性能,在調(diào)試的過程中,也鍛煉了自己發(fā)
13、現(xiàn)問題、解決問題的能力。</p><p><b> 八、參考文獻</b></p><p> 1.《EDA技術綜合應用實例與分析》——譚會生、翟遂春 著。</p><p><b> 譯碼器</b></p><p><b> 一、設計任務與要求</b></p>
14、<p> 1.設計一個簡單的 3-8譯碼器;</p><p> 2.握組合邏輯電路的靜態(tài)測試方法;</p><p> 3.初步了解可編程器件設計的全過程。</p><p><b> 二、方案設計與論證</b></p><p> 3-8譯碼器電路(138)的功能與編碼器的功能相反。輸入變量有3個,即A
15、、B、C,輸出變量有8個,即Y0~Y7,對輸入變量A、B、C譯碼,就能確定輸出端Y0~Y7的輸出變?yōu)橛行Вǖ碗娖剑?,從而達到譯碼目的。</p><p><b> 真值表:</b></p><p> 三、單元電路設計與參數(shù)計算</p><p><b> 程序代碼:</b></p><p> L
16、IBRARY ieee; </p><p> USE ieee.std_logic_1164.ALL; </p><p> ENTITY decoder3_8 IS </p><p><b> PORT( </b></p><p> A, B,C,G1,G2A,G2B: IN STD_LOGIC; </p
17、><p> Y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); </p><p> END decoder3_8; </p><p> ARCHITECTURE fun OF decoder3_8 IS </p><p> SIGNAL indata: STD_LOGIC_VECTOR(2 DOWNTO 0); &
18、lt;/p><p><b> BEGIN </b></p><p> indata <= C&B&A; </p><p><b> encoder: </b></p><p> PROCESS (indata, G1, G2A,G2B) </p><p&
19、gt;<b> BEGIN </b></p><p> IF (G1='1' AND G2A='0' AND G2B='0') THEN </p><p> CASE indata IS </p><p> WHEN "000"=>Y<="1111
20、1110"; </p><p> WHEN "001"=>Y<="11111101"; </p><p> WHEN "010"=>Y<="11111011"; </p><p> WHEN "011"=>Y<=&q
21、uot;11110111"; </p><p> WHEN "100"=>Y<="11101111"; </p><p> WHEN "101"=>Y<="11011111"; </p><p> WHEN "110"=>
22、Y<="10111111"; </p><p> WHEN "111"=>Y<="01111111"; </p><p> WHEN OTHERS =>Y<="XXXXXXXX"; </p><p> END CASE; </p><
23、;p><b> ELSE </b></p><p> Y<="11111111"; </p><p><b> END IF; </b></p><p> END PROCESS encoder; </p><p><b> END fun;<
24、;/b></p><p> 四、總原理圖及元器件清單</p><p><b> 1.總原理圖</b></p><p> 1.元件清單(或程序清單)</p><p><b> 五、安裝與調(diào)試</b></p><p> 輸入信號 A、B、C 接撥碼開關,其中 A、
25、B、C代表三路數(shù)據(jù)輸入,G1、G2A、G2B代表控制端;輸出信號 Y0~Y7 接發(fā)光二極管,代表8路譯碼數(shù)據(jù)輸出。改變撥碼開關的狀態(tài),參照3-8譯碼器真值表,觀察實驗結果。</p><p><b> 六、性能測試與分析</b></p><p><b> 七、結論與心得</b></p><p> 通過對譯碼器的設計,更
26、加認識到了譯碼器的原理與性能,在調(diào)試的過程中,也鍛煉了自己發(fā)現(xiàn)問題、解決問題的能力。也培養(yǎng)了自己的動手能力,為今后的工作做出了鋪墊。</p><p><b> 八、參考文獻</b></p><p> 1.《VHDL程序設計教程》——邢建平、曾繁泰 著。</p><p><b> 數(shù)字鐘</b></p>
27、<p><b> 一、設計任務與要求</b></p><p> 1.具有時、分、秒計數(shù)顯示功能,以二十四小時循環(huán)計時;</p><p> 2.具有清零,調(diào)節(jié)小時,分鐘的功能;</p><p> 3.具有整點報時同時LED燈花樣顯示的功能。</p><p><b> 二、方案設計與論證<
28、/b></p><p> 1、時鐘計數(shù):秒……60進制BCD碼計數(shù)。</p><p> 分……60進制BCD碼計數(shù)。</p><p> 時……24進制BCD碼計數(shù)。</p><p> 同時整個計數(shù)器有清零、調(diào)時、調(diào)分功能。在接近整數(shù)時能提供報時信號。</p><p> 2、具有驅動8位8段共陰極掃描數(shù)碼
29、管的片選驅動信號輸出和8段字形譯碼輸出。</p><p> 3、揚聲器在整點時有報時驅動信號產(chǎn)生。</p><p> 4、LED燈整點時有花樣顯示信號產(chǎn)生。</p><p> 三、單元電路設計與參數(shù)計算</p><p><b> 程序代碼:</b></p><p><b> 秒
30、計時模塊:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity second is</p><p> p
31、ort(clk,reset,semin:in std_logic;</p><p> enmin:out std_logic;</p><p> daout:out std_logic_vector(6 downto 0));</p><p> end second;</p><p> architecture rtl of seco
32、nd is</p><p> signal count:std_logic_vector(6 downto 0);</p><p> signal enmin_1,enmin_2:std_logic;</p><p><b> begin</b></p><p> daout<=count;</p&g
33、t;<p> enmin_2<=(semin and clk);</p><p> enmin<=(enmin_1 or enmin_2);</p><p> process(clk,reset,semin)</p><p><b> begin</b></p><p> if(res
34、et='0')then</p><p> count<="0000000";</p><p> enmin_1<='0';</p><p> elsif(clk'event and clk='1')then</p><p> if(count(3
35、downto 0)="1001")then</p><p> if(count<60)then</p><p> if(count="1011001")then</p><p> enmin_1<='1';count<="0000000";</p>&l
36、t;p><b> else</b></p><p> count<=count+7;</p><p><b> end if;</b></p><p><b> else</b></p><p> count<="0000000"
37、;</p><p><b> end if;</b></p><p> elsif(count<60)then</p><p> count<=count+1;</p><p> enmin_1<='0';</p><p><b> else&
38、lt;/b></p><p> count<="0000000";enmin_1<='0';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;&
39、lt;/p><p><b> end rtl;</b></p><p><b> 分計時模塊:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_
40、logic_unsigned.all;</p><p> entity minute is</p><p> port(clk,reset,clks,sethour:in std_logic;</p><p> enhour:out std_logic;</p><p> daout:out std_logic_vector(6 do
41、wnto 0));</p><p> end minute;</p><p> architecture rtl of minute is</p><p> signal count:std_logic_vector(6 downto 0);</p><p> signal enhour_1,enhour_2:std_logic;&l
42、t;/p><p><b> begin</b></p><p> daout<=count;</p><p> enhour_2<=(sethour and clk);</p><p> enhour<=(enhour_1 or enhour_2);</p><p> pr
43、ocess(clk,reset,sethour)</p><p><b> begin</b></p><p> if(reset='0')then</p><p> count<="0000000";</p><p> enhour_1<='0';
44、</p><p> elsif(clk'event and clk='1')then</p><p> if(count(3 downto 0)="1001")then</p><p> if(count<=60)then</p><p> if(count="1011001
45、")then</p><p> enhour_1<='1';count<="0000000";</p><p><b> else</b></p><p> count<=count+7;</p><p> enhour_1<='0
46、39;;</p><p><b> end if;</b></p><p><b> else</b></p><p> count<="0000000";</p><p><b> end if;</b></p><p&g
47、t; elsif(count<60)then</p><p> count<=count+1;</p><p> enhour_1<='0' after 100 ns;</p><p><b> else</b></p><p> count<="0000000
48、";enhour_1<='0';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p><b> end rtl;</b></
49、p><p><b> 小時計時模塊:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity hour
50、 is</p><p> port(clk,reset:in std_logic;</p><p> daout:out std_logic_vector(5 downto 0));</p><p><b> end hour;</b></p><p> architecture rtl of hour is&l
51、t;/p><p> signal count:std_logic_vector(5 downto 0);</p><p><b> begin</b></p><p> daout<=count;</p><p> process(clk,reset)</p><p><b>
52、 begin</b></p><p> if(reset='0')then</p><p> count<="000000";</p><p> elsif(clk'event and clk='1')then</p><p> if(count(3 do
53、wnto 0)="1001")then</p><p> if(count<23)then</p><p> count<=count+7;</p><p><b> else</b></p><p> count<="000000";</p>
54、<p><b> end if;</b></p><p> elsif(count<23)then</p><p> count<=count+1;</p><p><b> else</b></p><p> count<="000000&quo
55、t;;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p><b> end rtl;</b></p><p><b> 時間
56、設置模塊:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> use ieee.std_logic_arith.all;</p>
57、<p> entity settime is</p><p> port(clk,reset:in std_logic;</p><p> sec,min:in std_logic_vector(6 downto 0);</p><p> hour:in std_logic_vector(5 downto 0);</p><p
58、> dp:out std_logic;</p><p> sel:out std_logic_vector(5 downto 0);</p><p> daout:out std_logic_vector(3 downto 0));</p><p> end settime;</p><p> architecture rtl
59、 of settime is</p><p> signal count:std_logic_vector(2 downto 0);</p><p><b> begin</b></p><p> process(clk,reset)</p><p><b> begin</b></p
60、><p> if(reset='0')then</p><p> count<="000";</p><p> elsif(clk'event and clk='1')then</p><p> if(count>="101")then</p
61、><p> count<="000";</p><p><b> else</b></p><p> count<=count+1;</p><p><b> end if;</b></p><p><b> end if;&l
62、t;/b></p><p> end process;</p><p> process(clk,reset)</p><p><b> begin</b></p><p> if(reset='0')then</p><p> daout<="00
63、00";</p><p><b> dp<='0';</b></p><p> sel<="111111";</p><p> elsif(clk'event and clk='1')then</p><p> case count
64、 is</p><p> when"000"=>daout<=sec(3 downto 0);</p><p><b> dp<='0';</b></p><p> sel<="111110";</p><p> when"
65、001"=>daout(3)<='0';</p><p> daout(2 downto 0)<=sec(6 downto 4);</p><p><b> dp<='0';</b></p><p> sel<="111101";</p>
66、;<p> when"010"=>daout<=min(3 downto 0);</p><p><b> dp<='1';</b></p><p> sel<="111011";</p><p> when"011"=&g
67、t;daout(3)<='0';</p><p> daout(2 downto 0)<=min(6 downto 4);</p><p><b> dp<='0';</b></p><p> sel<="110111";</p><p>
68、 when"100"=>daout<=hour(3 downto 0);</p><p><b> dp<='1';</b></p><p> sel<="101111";</p><p> when"101"=>daout(3 d
69、ownto 2)<="00";</p><p> daout(1 downto 0)<=hour(5 downto 4);</p><p><b> dp<='0';</b></p><p> sel<="011111";</p><p&g
70、t; when others=>daout<="0000";</p><p><b> dp<='0';</b></p><p> sel<="111111";</p><p><b> end case;</b></p>
71、<p><b> end if;</b></p><p> end process;</p><p><b> end rtl;</b></p><p><b> 掃描顯示模塊:</b></p><p> library ieee;</p>
72、<p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity deled is</p><p> port(num:in std_logic_vector(3 downto 0);</p><p> l
73、ed:out std_logic_vector(6 downto 0));</p><p> end deled;</p><p> architecture rtl of deled is</p><p><b> begin</b></p><p> led<="111110"whe
74、n num="0000"else</p><p> "0110000"when num="0001"else</p><p> "1101101"when num="0010"else</p><p> "1111001"when num=&
75、quot;0011"else</p><p> "0110011"when num="0100"else</p><p> "1011011"when num="0101"else</p><p> "1011111"when num="01
76、10"else</p><p> "1110000"when num="0111"else</p><p> "1111111"when num="1000"else</p><p> "1111011"when num="1001"
77、;else</p><p> "1110111"when num="1010"else</p><p> "0011111"when num="1011"else</p><p> "1001110"when num="1100"else&l
78、t;/p><p> "0111101"when num="1101"else</p><p> "1001111"when num="1110"else</p><p> "1000111"when num="1111";</p>
79、<p><b> end rtl;</b></p><p><b> 整點報時模塊:</b></p><p> LIBRARY ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsi
80、gned.all;</p><p> ENTITY alert IS</p><p><b> PORT(</b></p><p> clk : INSTD_LOGIC;</p><p> dain : INSTD_LOGIC_VECTOR(6 DOWNTO 0);</p><p>
81、 speak: OUTSTD_LOGIC;</p><p> lamp : OUT STD_LOGIC_VECTOR(2 DOWNTO 0));</p><p> END alert ;</p><p> ARCHITECTURE fun OF alert IS</p><p> signal count : std_logic
82、_vector( 1 downto 0);</p><p> signal count1: std_logic_vector( 1 downto 0);</p><p><b> BEGIN</b></p><p> speaker:process (clk)</p><p><b> begin &l
83、t;/b></p><p> speak <= count1(1);</p><p> if (clk 'event and clk= '1') then</p><p> if (dain = "000000") then</p><p> if (count1>=&qu
84、ot;10") then </p><p> count1<="00";</p><p><b> else</b></p><p> count1 <= count1 + 1;</p><p><b> end if; </b></p>
85、<p><b> end if;</b></p><p><b> end if;</b></p><p> end process speaker;</p><p> lamper:process(clk)</p><p><b> begin</b>
86、</p><p> if (rising_edge(clk))then </p><p> if (count <= "10") then</p><p> if (count ="00") then</p><p> lamp <= "001" ;</p&
87、gt;<p> elsif (count = "01") then</p><p> lamp <= "010" ;</p><p> elsif(count="10") then </p><p> lamp <= "100" ;</p>
88、<p><b> end if;</b></p><p> count <= count + 1;</p><p><b> else </b></p><p> count <= "00";</p><p><b> end if;
89、</b></p><p> end if; </p><p> end process lamper;</p><p><b> end fun ;</b></p><p> 四、總原理圖及元器件清單</p><p><b> 1.總原理圖</b&g
90、t;</p><p> 1.元件清單(或程序清單)</p><p><b> 五、安裝與調(diào)試</b></p><p><b> 輸入接口:</b></p><p> 1、代表清零、調(diào)時、調(diào)分信號RESET、SETHOUR、SETMIN的管腳分別連接按鍵開關。</p><p
91、> 2、代表計數(shù)時鐘信號CLK和掃描時鐘信號CKDSP的管腳分別同1Hz時鐘源和32Hz(或更高)時鐘源相連。</p><p><b> 輸出接口:</b></p><p> 1、代表掃描顯示的驅動信號管腳SEL2、SEL1、SEL0和a,b,c,d,e,f,g參照實驗四的連法。</p><p> 2、代表揚聲器驅動信號的管腳SP
92、EAK同揚聲器驅動接口SPEAKER相連。</p><p> 3、代表花樣燈顯示信號管腳LAMP0、LAMP1、LAMP2同3個LED燈相連。</p><p><b> 六、性能測試與分析</b></p><p> 時鐘信號每60次,秒計時模塊向分計時模塊發(fā)射一個脈沖信號;分計時模塊收到60次脈沖,向小時計時模塊發(fā)射一個脈沖信號;小時模塊
93、收到23次脈沖,自動清零。</p><p><b> 七、結論與心得</b></p><p> 通過對數(shù)字鐘的設計,了解到掃描電路實現(xiàn)顯示功能的潛在好處,對數(shù)字鐘原理有了深刻的認識,認識到了進位輸出的原理與實現(xiàn)。在調(diào)試的過程中,也鍛煉了自己發(fā)現(xiàn)問題、解決問題的能力。也培養(yǎng)了自己的動手能力,為今后的工作做出了鋪墊。</p><p><b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論