关于双向口
时间:10-02
整理:3721RD
点击:
写了一个双向口的练习程序,可仿真总是不对(modelsim和maxplus),总有不定的状态出现,请高人帮忙看看,指点一下,我对双向口不熟悉。谢谢!library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity birio is
port(clk:in std_logic;
reset:in std_logic;
enableout:in std_logic;
bir_io:inout std_logic;
dataoutut std_logic
);
endbirio;
architecture a of birio is
signal temp_d:std_logic;
signal temp_d2:std_logic_vector(7 downto 0);
begin
process(reset,clk)
begin
if reset='1' then
temp_d<='1';
temp_d2<="10101010";
elsif rising_edge(clk)then
if enableout='1' then
bir_io<=temp_d2(7);
temp_d2<=temp_d2(6 downto 0)&'0';
else
bir_io<='Z';
temp_d<=bir_io;
end if;
end if;
end process;
dataout<=not temp_d;
end a;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity birio is
port(clk:in std_logic;
reset:in std_logic;
enableout:in std_logic;
bir_io:inout std_logic;
dataoutut std_logic
);
endbirio;
architecture a of birio is
signal temp_d:std_logic;
signal temp_d2:std_logic_vector(7 downto 0);
begin
process(reset,clk)
begin
if reset='1' then
temp_d<='1';
temp_d2<="10101010";
elsif rising_edge(clk)then
if enableout='1' then
bir_io<=temp_d2(7);
temp_d2<=temp_d2(6 downto 0)&'0';
else
bir_io<='Z';
temp_d<=bir_io;
end if;
end if;
end process;
dataout<=not temp_d;
end a;
关于双向口
双向口仿真肯定有不定态的
关于双向口
你的程序写的有问题
关于双向口
谢谢小编回复,我检查了好几遍,没有找到问题,请小编大人指点一下,谢谢!
还有我仿真的问题是,当应该是输出时,仿真的结果却是不定的。
关于双向口
bir_io<='Z';
temp_d<=bir_io;
关于双向口
这种写法我是参照论坛的文章写的阿,我没有写过双向口的逻辑,请小编指点一下,可否给一个能正确仿真简单的双向口程序,谢谢!
关于双向口
这种写法是有问题的
关于双向口
我这几天也在编双向口.觉得小编的process里应该有bir_io,当其他设备占有总线时就会执行bir_io<="z";不只说的对不对.我用isplever仿的,看起来对,等一会烧进去看看对不对