longtime 发表于 2010-6-28 00:19:48

仿真结果不对

本帖最后由 fpgaw 于 2010-7-6 05:41 编辑

我的双向三态门,怎么仿真结果不对.是不是程序有问题

LIBRARY IEEE;
USE IEEE.std_logic_1164.all;

ENTITY BIDIR_BUFF8 IS

    PORT
    (
      A,B                  : INOUT    STD_LOGIC_VECTOR (7 DOWNTO 0);      
      EN                  : IN    STD_LOGIC;                        
      DIR                  : IN    STD_LOGIC                           
    );
   
END BIDIR_BUFF8;

ARCHITECTURE behave OF BIDIR_BUFF8 IS
    SIGNAL A_TEMP,B_TEMP:STD_LOGIC_VECTOR(7 DOWNTO 0);      
BEGIN
    PROCESS(A,B,EN,DIR)
    BEGIN
      IF(EN='0')THEN
            IF(DIR='1')THEN
                B_TEMP<=A;
            ELSE
                A_TEMP<=B;
            END IF;
      ELSE
            A_TEMP<=(OTHERS=>'Z');
            B_TEMP<=(OTHERS=>'Z');
      END IF;   
    END PROCESS;      
    B<=B_TEMP;
    A<=A_TEMP;
END behave;Sample Text

CHAN 发表于 2010-6-28 01:23:15

没人回答我啊<br>
<br>
还是要靠自己呵

interige 发表于 2010-6-28 02:22:13

请热心网友帮忙!

tim 发表于 2010-6-28 02:27:32

Sorry<br>
看不懂VHDL<br>
<br>
只会Verilog

inter 发表于 2010-6-28 02:49:03

B&lt;=B_TEMP;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;A&lt;=A_TEMP;<br>
<br>
怎么都输出??俺也不懂vhdl,,但是总觉得这两句不行。。<br>
怎么让人感觉有锁存器阿!!谁综合没有。。

CHANG 发表于 2010-6-28 03:43:25

A_TEMP&lt;=(OTHERS=&gt;'Z');<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;B_TEMP&lt;=(OTHERS=&gt;'Z');<br>
使用latch实现?<br>
<br>
为何不用双向传输门,然后AB后端加三态门实现?

CCIE 发表于 2010-6-28 04:50:26

当然有问题。<br>
A_TEMP以及B_TEMP锁存了。<br>
改为:<br>
if(DIR='1')then<br>
&nbsp; &nbsp; B_TEMP&lt;=A;<br>
&nbsp; &nbsp; A_TEMP&lt;=(OTHERS=&gt;'Z');<br>
else then<br>
&nbsp; &nbsp; A_TEMP&lt;=B;<br>
&nbsp; &nbsp;B_TEMP&lt;=(OTHERS=&gt;'Z');<br>
<br>
[ 本帖最后由 xiaoyanxue 于 2006-6-12 13:44 编辑 ]

CHANG 发表于 2010-6-28 05:45:30

看不懂VHDL<br>
<br>
只会Verilog
页: [1]
查看完整版本: 仿真结果不对