Presentation is loading. Please wait.

Presentation is loading. Please wait.

使用VHDL設計-多工器/解多工器 通訊一甲 B09622048 楊穎穆.

Similar presentations


Presentation on theme: "使用VHDL設計-多工器/解多工器 通訊一甲 B09622048 楊穎穆."— Presentation transcript:

1 使用VHDL設計-多工器/解多工器 通訊一甲 B 楊穎穆

2 目錄 目的 設計原理 多工器&解多工器 真值表 程式 實驗結果 資料來源

3 目的 使用VHDL設計一個四組4Bit輸入對一組4Bit輸出之多工器。 使用VHDL設計一個一組4Bit輸入對四組4Bit輸出之解多工器。
a0 A a1 a2 a3 op1 op op2 op3 op4 sel a0 A a1 a2 a3 ip1 ip ip2 ip3 ip4 sel

4 設計原理 多工器又可以叫做”選擇器” 。 而這次程式主要可以使用if…then和case的方式來寫,而我用的是if…then的方式,在程式中它會依照輸入的條件不同,而將訊號選擇到不同的輸出位置,產生我們想得到的結果。

5 多工器&解多工器 多 多 少 少 op0 I0 op Ip I1 op1 Sel(選擇) Sel(選擇) 2x1MUX 1x2DEMUX
當sel=‘0’ =>op0=Ip 當sel=‘0’ =>op=I0 ※No-of-sel=[log2ni]=[log22]=1,sel=1

6 真值表 --多工器 sel Op 00 01 10 11 a(a0,a1,a2,a3) b(b0,b1,b2,b3)
c(c0,c1,c2,c3) 11 d(d0,d1,d2,d3)

7 真值表 --解多工器 sel Op1 op2 op3 op4 00 01 10 11 ip 0 0 0 0 ip 0 0 0 0 ip 0

8 程式 --多工器 library ieee; use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity MUX4_1 is ic內部要做的電路名稱 port( 接腳 a,b,c,d : in std_logic_vector(3 downto 0); a,b,c,d為輸入腳位,且內部各有四個位元數 op : out std_logic_vector(3 downto 0); op為輸出腳位,內部有四個位元數 sel : in std_logic_vector(1 downto 0) sel為輸入腳位,內部有兩個位元數 ); end;

9 architecture Behav of MUX4_1 is --電路內部結構
begin process(a,b,c,d,sel) --處理影響內部的輸入訊號 a,b,c,d,sel if sel="00" then op<=a; --假如輸入sel為"00"時,op會搬入 a elsif sel="01" then op<=b; --假如輸入sel為"01",op會搬入b elsif sel="10" then op<=c; --假如輸入sel為"10",op會搬入c else op<=d; 假如輸入sel為"11",op會搬入d end if; 結束if程式 end process; 結束process程式 end Behav; 程式結束

10 程式 --解多工器 library ieee; use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity DEMUX1_4 is ic電路內部要做的電路名稱 port( 接腳 ip : in std_logic_vector(3 downto 0); ip為輸入腳位,且內部有四個位元數 op1,op2,op3,op4: out std_logic_vector(3 downto 0); op1,op2,op3,op4為輸出腳位,內部各有四個位元數 sel : in std_logic_vector(1 downto 0) sel為輸入腳位,內部有兩個位元數 ); end;

11 architecture Behav of DEMUX1_4 is --電路內部結構
begin process(ip,sel) 處理影響的輸入訊號 ip,sel if sel="00" then op1<= ip; else op1<="0000"; end if; 假如sel輸入為"00",op1會搬入ip,另外op1就會搬入"0000",結束動作 if sel="01" then op2<= ip; else op2<="0000"; end if; 假如sel輸入為"01",op2會搬入ip,另外op2就會搬入"0000",結束動作 if sel="10" then op3<= ip; else op3<="0000"; end if; 假如sel輸入為"10",op3會搬入ip,另外op3就會搬入"0000",結束動作 if sel="11" then op4<= ip; else op4<="0000"; end if; 假如sel輸入為"11",op4會搬入ip,另外op4就會搬入"0000",結束動作 end process; 結束process程式 end Behav; 程式結束

12 實驗結果(1) --多工器 當sel為“00”時,a0為‘1’時,此時輸出的op0就為‘1’燈亮,若a0,a1,a2皆為‘1’時,輸出的op0,op1,op2皆是‘1’就會三個燈都亮起來。

13 實驗結果(2) --多工器 當sel為“00”時, a0,a1,a2,a3皆為‘1’時,輸出的op0,op1,op2,op3皆是‘1’就會四個燈都亮起來。 當sel為“01”時, b0,b1,b2,b3皆為‘1’時,輸出的op0,op1,op2,op3皆是‘1’就會四個燈都亮起來。

14 實驗結果(3) --多工器 當sel為“10”時, c0,c1,c2,c3皆為‘1’時,輸出的op0,op1,op2,op3皆是‘1’就會四個燈都亮起來。 當sel為“11”時, d0,d1,d2,d3皆為‘1’時,輸出的op0,op1,op2,op3皆是‘1’就會四個燈都亮起來。

15 實驗結果(4) --解多工器 當sel為“00”時, ip0,ip1,ip2,ip3皆為‘1’時,輸出的op10,op20,op30,op40皆是‘1’就會四個燈都亮起來。 當sel為“01”時, ip0,ip1,ip2,ip3皆為‘1’時,輸出的op11,op21,op31,op41皆是‘1’就會四個燈都亮起來。

16 實驗結果(5) --解多工器 當sel為“10”時, ip0,ip1,ip2,ip3皆為‘1’時,輸出的op13,op23,op33,op43皆是‘1’就會四個燈都亮起來。 當sel為“11”時, ip0,ip1,ip2,ip3皆為‘1’時,輸出的op14,op24,op34,op44皆是‘1’就會四個燈都亮起來。

17 資料來源 主要的內容都來至王志湖老師上課所教授的內容所做成的筆記及“數位邏輯”這本書。

18 END


Download ppt "使用VHDL設計-多工器/解多工器 通訊一甲 B09622048 楊穎穆."

Similar presentations


Ads by Google