這是一個雙二選1多路選擇器的原理圖,用VHDL語言描述,需要用到元器件例化語句。
首先編寫2選一多路選擇器。
entity mux21a is
port(a,b,c:in bit;
y:out bit
);
end;
architecture bhv of mux21a is
begin
process(a,b,c)
begin
if s='0' then y<=a; else y<=b;
end if;
end process;
end architecture bhv;
其電路邏輯:當y輸出高電平'1'時,s='0',a=1(b不考慮)
s='1',b=1(a不考慮)
當y輸出低電平‘0’時,s='0',a=0(b不考慮)
s='1',b=0(a不考慮)
雙2選1多路選擇器程序
entity muxk is
port(a1,a2,a3,s0,s1:in bit;
outy:out bit
);
end;
architecture bhv of muxk is
component mux21a
port(a,b,s:in bit;
y:out bit
);
end component;
signal tmp:bit;
begin
u1:mux21a port map(a=>a2,b=>a3,s=>s0,y=>tmp);
u2:mux21a port map(a=>a1,b=>tmp,s=>s1,y=>outy);
end architecture bhv;
其電路邏輯:當輸出為高電平'1'時,s1=0.a1=1(s0,a2,a3不考慮)
s1=1,s0=0,a2=1(a1,a3不考慮)
s0=1,a3=1(a1,a2不考慮)
當輸出為低電平'0'時,s1=0,a1=0(s0,a2,a3不考慮)
s1=1, s0=0,a2=0(a1,a3不考慮)
s1=1,s0=1,a3=0(a1,a2不考慮)
VHDL例化語句
例化語句由兩部分組成,第一部分是將一個現成的設計實體定義為一個元件,語句的功能是對待調用的這個元器件做出調用聲明。格式如下:
component 元件名 is
port(端口名)
end component;
元件定義語句必須放在結構體的architecture和begin之間。
端口信號的數據類型的定義必須與原設計實體文件一致,而且信號的排列方式也要與原來一致,包括端口模式、數據類型、功能定義等。
元件例化語句的第二部分則是此元件與當前設計實體(頂層文件)中元件間及端口的連接說明。
例化名:元件名 port map([端口名=>]連接端口名.....);
port map是端口映射,或端口連接的意思。其中的“端口名”是在元件定義語句中的端口名表中已定義好元件端口的名字。
“=>”僅代表連接關系,不代表信號流動的方向。