Here I have given a block diagram of Bidirectional Bus. This bus takes input from Data_in and gives output from Bi_Data when OE signal is high. In the same way when OE signal is low then it takes input from Bi_Data and gives output from Data_Out. Below I have mentioned input output into table.
Sr. No.
|
Name
|
Direction
|
Width
|
Remark
|
1
|
Data_in
|
Input
|
16
|
Input
Data Signal |
2
|
Data_out
|
Output
|
16
|
Output Data
Signal |
3
|
Bi_Data
|
Inout
|
16
|
Input
and Output Data Signal |
4
|
OE
|
Input
|
1
|
Output Enable
Signal |
library ieee;
use ieee.std_logic_1164.all;
entity bidirectional_bus is
generic (width : natural := 15); -- Width of bus
port (Data_In : in std_logic_vector ( width downto 0 ); -- input data
Data_Out : out std_logic_vector ( width downto 0 ); -- Output data
Bi_Data : inout std_logic_vector ( width downto 0 ); -- Bidirectional Data Pin
OE : in std_logic); -- Output Enable
end bidirectional_bus;
architecture beh of bidirectional_bus is
process(OE, Bi_Data, Data_In)
begin
if OE = ‘1’ then
Bi_Data <= Data_in; Data_out <= ( others => ‘Z’ );
else
Data_Out <= Bi_Data; Bi_Data <= ( others => ‘Z’ );
end If;
end process;
end beh;
No comments:
Post a Comment