版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 串入并出移位寄存器</b></p><p><b> 一、設(shè)計任務(wù)與要求</b></p><p> 1.設(shè)計一個4位的串入并出移位寄存器; </p><p> 2.要求能分別輸入兩組4位數(shù)據(jù),同時輸出顯示。</p><p><b> 二、方案設(shè)計與論證
2、</b></p><p> 移位寄存器除了具有存儲代碼的功能以外,還具有移位功能。所謂移位功能,是指寄存器里存儲的代碼能在移位脈沖的作用下依次左移或右移。因此,移位寄存器不但可以用來寄存代碼,還可用來實現(xiàn)數(shù)據(jù)的串并轉(zhuǎn)換、數(shù)字的運算以及數(shù)據(jù)處理等。</p><p> 所謂的串入/并出移位寄存器, 即輸入的數(shù)據(jù)是一個接著一個有序地進入, 輸出時則一起送出。兩組數(shù)據(jù)伴隨著時鐘信號
3、依次輸入,輸出時消除延時。</p><p> 三、單元電路設(shè)計與參數(shù)計算</p><p><b> 程序代碼:</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_l
4、ogic_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> cl
5、k:in 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_v
6、ector(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&
7、gt;<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&g
8、t;<p> end process p1;</p><p><b> d_out<=q;</b></p><p><b> end a;</b></p><p> 四、總原理圖及元器件清單</p><p><b> 1.總原理圖</b></
9、p><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ù),實用上可將取樣脈沖的周期設(shè)定成CLK 脈沖的
10、四倍,也就是說,每經(jīng)過 4 個CLK 脈沖后</p><p><b> 實驗連線 </b></p><p> 輸入信號D-IN(代表一位的串行數(shù)據(jù)輸入)和 CLK(代表抽樣時鐘信號) ,CLK 時鐘信號接適配器板子上的時鐘信號,頻率建議取在 1Hz 左右,D-IN 接撥碼開關(guān)或按鍵;輸出信號有D-OUT0~D-OUT3(代表 4位并行數(shù)據(jù)輸出) ,接發(fā)光二極管。&
11、lt;/p><p><b> 六、性能測試與分析</b></p><p><b> 七、結(jié)論與心得</b></p><p> 當(dāng)按順序依次輸入兩組4尾數(shù)據(jù)時,輸入端同時顯示出兩組數(shù)據(jù)。</p><p> 通過對串入并出移位寄存器的設(shè)計,更加認識到了移位寄存器的原理與性能,在調(diào)試的過程中,也鍛煉了
12、自己發(fā)現(xiàn)問題、解決問題的能力。</p><p><b> 八、參考文獻</b></p><p> 1.《EDA技術(shù)綜合應(yīng)用實例與分析》——譚會生、翟遂春 著。</p><p><b> 譯碼器</b></p><p><b> 一、設(shè)計任務(wù)與要求</b></p&g
13、t;<p> 1.設(shè)計一個簡單的 3-8譯碼器;</p><p> 2.握組合邏輯電路的靜態(tài)測試方法;</p><p> 3.初步了解可編程器件設(shè)計的全過程。</p><p><b> 二、方案設(shè)計與論證</b></p><p> 3-8譯碼器電路(138)的功能與編碼器的功能相反。輸入變量有3個
14、,即A、B、C,輸出變量有8個,即Y0~Y7,對輸入變量A、B、C譯碼,就能確定輸出端Y0~Y7的輸出變?yōu)橛行Вǖ碗娖剑?,從而達到譯碼目的。</p><p><b> 真值表:</b></p><p> 三、單元電路設(shè)計與參數(shù)計算</p><p><b> 程序代碼:</b></p><p>
15、 LIBRARY 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; <
16、;/p><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)
17、; </p><p><b> BEGIN </b></p><p> indata <= C&B&A; </p><p><b> encoder: </b></p><p> PROCESS (indata, G1, G2A,G2B) </p><
18、;p><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<="1
19、1111110"; </p><p> WHEN "001"=>Y<="11111101"; </p><p> WHEN "010"=>Y<="11111011"; </p><p> WHEN "011"=>Y<
20、="11110111"; </p><p> WHEN "100"=>Y<="11101111"; </p><p> WHEN "101"=>Y<="11011111"; </p><p> WHEN "110"=&
21、gt;Y<="10111111"; </p><p> WHEN "111"=>Y<="01111111"; </p><p> WHEN OTHERS =>Y<="XXXXXXXX"; </p><p> END CASE; </p>
22、<p><b> ELSE </b></p><p> Y<="11111111"; </p><p><b> END IF; </b></p><p> END PROCESS encoder; </p><p><b> END fun;
23、</b></p><p> 四、總原理圖及元器件清單</p><p><b> 1.總原理圖</b></p><p> 1.元件清單(或程序清單)</p><p><b> 五、安裝與調(diào)試</b></p><p> 輸入信號 A、B、C 接撥碼開關(guān),其中
24、 A、B、C代表三路數(shù)據(jù)輸入,G1、G2A、G2B代表控制端;輸出信號 Y0~Y7 接發(fā)光二極管,代表8路譯碼數(shù)據(jù)輸出。改變撥碼開關(guān)的狀態(tài),參照3-8譯碼器真值表,觀察實驗結(jié)果。</p><p><b> 六、性能測試與分析</b></p><p><b> 七、結(jié)論與心得</b></p><p> 通過對譯碼器的設(shè)
25、計,更加認識到了譯碼器的原理與性能,在調(diào)試的過程中,也鍛煉了自己發(fā)現(xiàn)問題、解決問題的能力。也培養(yǎng)了自己的動手能力,為今后的工作做出了鋪墊。</p><p><b> 八、參考文獻</b></p><p> 1.《VHDL程序設(shè)計教程》——邢建平、曾繁泰 著。</p><p><b> 數(shù)字鐘</b></p>
26、;<p><b> 一、設(shè)計任務(wù)與要求</b></p><p> 1.具有時、分、秒計數(shù)顯示功能,以二十四小時循環(huán)計時;</p><p> 2.具有清零,調(diào)節(jié)小時,分鐘的功能;</p><p> 3.具有整點報時同時LED燈花樣顯示的功能。</p><p><b> 二、方案設(shè)計與論證&
27、lt;/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、具有驅(qū)動8位8段共陰極掃
28、描數(shù)碼管的片選驅(qū)動信號輸出和8段字形譯碼輸出。</p><p> 3、揚聲器在整點時有報時驅(qū)動信號產(chǎn)生。</p><p> 4、LED燈整點時有花樣顯示信號產(chǎn)生。</p><p> 三、單元電路設(shè)計與參數(shù)計算</p><p><b> 程序代碼:</b></p><p><b>
29、 秒計時模塊:</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>
30、 port(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 s
31、econd 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;</
32、p><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(
33、reset='0')then</p><p> count<="0000000";</p><p> enmin_1<='0';</p><p> elsif(clk'event and clk='1')then</p><p> if(count
34、(3 downto 0)="1001")then</p><p> if(count<60)then</p><p> if(count="1011001")then</p><p> enmin_1<='1';count<="0000000";</p>
35、<p><b> else</b></p><p> count<=count+7;</p><p><b> end if;</b></p><p><b> else</b></p><p> count<="0000000&qu
36、ot;;</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> el
37、se</b></p><p> count<="0000000";enmin_1<='0';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end proces
38、s;</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.s
39、td_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
40、 downto 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
41、;</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>
42、 process(clk,reset,sethour)</p><p><b> begin</b></p><p> if(reset='0')then</p><p> count<="0000000";</p><p> enhour_1<='0
43、9;;</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="1011
44、001")then</p><p> enhour_1<='1';count<="0000000";</p><p><b> else</b></p><p> count<=count+7;</p><p> enhour_1<='
45、0';</p><p><b> end if;</b></p><p><b> else</b></p><p> count<="0000000";</p><p><b> end if;</b></p><
46、p> 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<="0000
47、000";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>&l
48、t;/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 h
49、our 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 i
50、s</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&
51、gt; 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
52、 downto 0)="1001")then</p><p> if(count<23)then</p><p> count<=count+7;</p><p><b> else</b></p><p> count<="000000";</p&
53、gt;<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&
54、quot;;</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>
55、 時間設(shè)置模塊:</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&g
56、t;<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>&l
57、t;p> 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
58、rtl 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><
59、;/p><p> if(reset='0')then</p><p> count<="000";</p><p> elsif(clk'event and clk='1')then</p><p> if(count>="101")then<
60、;/p><p> count<="000";</p><p><b> else</b></p><p> count<=count+1;</p><p><b> end if;</b></p><p><b> end if
61、;</b></p><p> end process;</p><p> process(clk,reset)</p><p><b> begin</b></p><p> if(reset='0')then</p><p> daout<="
62、;0000";</p><p><b> dp<='0';</b></p><p> sel<="111111";</p><p> elsif(clk'event and clk='1')then</p><p> case co
63、unt is</p><p> when"000"=>daout<=sec(3 downto 0);</p><p><b> dp<='0';</b></p><p> sel<="111110";</p><p> when&qu
64、ot;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
65、><p> when"010"=>daout<=min(3 downto 0);</p><p><b> dp<='1';</b></p><p> sel<="111011";</p><p> when"011"
66、=>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&
67、gt; when"100"=>daout<=hour(3 downto 0);</p><p><b> dp<='1';</b></p><p> sel<="101111";</p><p> when"101"=>daout(
68、3 downto 2)<="00";</p><p> daout(1 downto 0)<=hour(5 downto 4);</p><p><b> dp<='0';</b></p><p> sel<="011111";</p><
69、p> when others=>daout<="0000";</p><p><b> dp<='0';</b></p><p> sel<="111111";</p><p><b> end case;</b></p&g
70、t;<p><b> end if;</b></p><p> end process;</p><p><b> end rtl;</b></p><p><b> 掃描顯示模塊:</b></p><p> library ieee;</p>
71、;<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>
72、 led: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"
73、when num="0000"else</p><p> "0110000"when num="0001"else</p><p> "1101101"when num="0010"else</p><p> "1111001"when nu
74、m="0011"else</p><p> "0110011"when num="0100"else</p><p> "1011011"when num="0101"else</p><p> "1011111"when num="
75、;0110"else</p><p> "1110000"when num="0111"else</p><p> "1111111"when num="1000"else</p><p> "1111011"when num="1001&q
76、uot;else</p><p> "1110111"when num="1010"else</p><p> "0011111"when num="1011"else</p><p> "1001110"when num="1100"els
77、e</p><p> "0111101"when num="1101"else</p><p> "1001111"when num="1110"else</p><p> "1000111"when num="1111";</p>
78、;<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_u
79、nsigned.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&
80、gt; 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_lo
81、gic_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
82、 </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>=
83、"10") then </p><p> count1<="00";</p><p><b> else</b></p><p> count1 <= count1 + 1;</p><p><b> end if; </b></p&
84、gt;<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&
85、gt;</p><p> if (rising_edge(clk))then </p><p> if (count <= "10") then</p><p> if (count ="00") then</p><p> lamp <= "001" ;<
86、/p><p> elsif (count = "01") then</p><p> lamp <= "010" ;</p><p> elsif(count="10") then </p><p> lamp <= "100" ;</p&g
87、t;<p><b> end if;</b></p><p> count <= count + 1;</p><p><b> else </b></p><p> count <= "00";</p><p><b> end i
88、f;</b></p><p> end if; </p><p> end process lamper;</p><p><b> end fun ;</b></p><p> 四、總原理圖及元器件清單</p><p><b> 1.總原理圖</
89、b></p><p> 1.元件清單(或程序清單)</p><p><b> 五、安裝與調(diào)試</b></p><p><b> 輸入接口:</b></p><p> 1、代表清零、調(diào)時、調(diào)分信號RESET、SETHOUR、SETMIN的管腳分別連接按鍵開關(guān)。</p>&l
90、t;p> 2、代表計數(shù)時鐘信號CLK和掃描時鐘信號CKDSP的管腳分別同1Hz時鐘源和32Hz(或更高)時鐘源相連。</p><p><b> 輸出接口:</b></p><p> 1、代表掃描顯示的驅(qū)動信號管腳SEL2、SEL1、SEL0和a,b,c,d,e,f,g參照實驗四的連法。</p><p> 2、代表揚聲器驅(qū)動信號的管
91、腳SPEAK同揚聲器驅(qū)動接口SPEAKER相連。</p><p> 3、代表花樣燈顯示信號管腳LAMP0、LAMP1、LAMP2同3個LED燈相連。</p><p><b> 六、性能測試與分析</b></p><p> 時鐘信號每60次,秒計時模塊向分計時模塊發(fā)射一個脈沖信號;分計時模塊收到60次脈沖,向小時計時模塊發(fā)射一個脈沖信號;小
92、時模塊收到23次脈沖,自動清零。</p><p><b> 七、結(jié)論與心得</b></p><p> 通過對數(shù)字鐘的設(shè)計,了解到掃描電路實現(xiàn)顯示功能的潛在好處,對數(shù)字鐘原理有了深刻的認識,認識到了進位輸出的原理與實現(xiàn)。在調(diào)試的過程中,也鍛煉了自己發(fā)現(xiàn)問題、解決問題的能力。也培養(yǎng)了自己的動手能力,為今后的工作做出了鋪墊。</p><p>&l
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計報告---串入并出移位寄存器
- 8位串入并出移位寄存器電路的設(shè)計
- 移位寄存器
- 雙向移位寄存器
- 移位寄存器71669
- 移位寄存器66874
- 移位寄存器70889
- 移位寄存器型彩燈控制器課程設(shè)計
- 移位寄存器66798
- 移位寄存器66934
- 移位寄存器66762
- 移位寄存器及其應(yīng)用
- 實驗5 移位寄存器設(shè)計
- vlsi課程設(shè)計 --8位移位寄存器設(shè)計
- 線性反饋移位寄存器
- 串行輸入并行輸出的移位寄存器-eda仿真
- 移位寄存器的設(shè)計與實現(xiàn)
- 集成移位寄存器應(yīng)用實驗
- 移位寄存器及應(yīng)用
- 2 移位寄存器及其應(yīng)用
評論
0/150
提交評論