Vhdl 如何控制本地控制器的输入输出引脚

Vhdl 如何控制本地控制器的输入输出引脚,vhdl,fpga,Vhdl,Fpga,实际上,我想制作一个本地控制器来启用闩锁。 正如您在下面的代码中所看到的,信号en将从w和x获取输出以启用锁存器。之后,w和x将获取en。例如,最初,假设w和x值从1开始,en将变为1,并使锁存器从data_in到data_out提取数据。之后,en将成为w和x的输入,并导致锁存器禁用。然而,当我使用大学波形程序测试它时,电路没有工作。“数据输出”没有包含“数据输入”的值。我仍然不知道问题出在哪里,因为我是VHDL新手。希望你能在这方面给我帮助/建议:)对不起,我的英语不好

实际上,我想制作一个本地控制器来启用闩锁。 正如您在下面的代码中所看到的,信号en将从w和x获取输出以启用锁存器。之后,w和x将获取en。例如,最初,假设w和x值从1开始,en将变为1,并使锁存器从data_in到data_out提取数据。之后,en将成为w和x的输入,并导致锁存器禁用。然而,当我使用大学波形程序测试它时,电路没有工作。“数据输出”没有包含“数据输入”的值。我仍然不知道问题出在哪里,因为我是VHDL新手。希望你能在这方面给我帮助/建议:)对不起,我的英语不好

            library ieee;
            use ieee.std_logic_1164.all;
            entity gasp_ctrl is
            port(
                w,x : inout std_logic; --! bidirectional wire
                data_in : in std_logic; --! Data In when latch is enable
                data_out: out std_logic --
            );
            end gasp_ctrl;

            architecture ctrl of gasp_ctrl is
                signal en, ww, xx : std_logic;

            begin
                en <=  w and x; ------ 
                ww <= en;
                xx <= not en;
                w <= ww;
                x <= xx;


                -------- Latch ------
                process(en)
                begin
                    if(en = '1') then
                        data_out <= data_in;
                    end if;
                end process;
            end gasp_ctrl;
ieee库;
使用ieee.std_logic_1164.all;
实体gasp\u ctrl为
港口(
w、 x:inout标准逻辑;--!双向导线
数据输入:在标准逻辑中;-!当锁存器启用时数据输入
数据输出:输出标准逻辑--
);
结束喘息;
gasp\U ctrl的体系结构ctrl为
信号en、ww、xx:std_逻辑;
开始

en您的代码行构成一个组合循环:

en <=  w and x;
ww <= en;
xx <= not en;
w <= ww;
x <= xx;

en您的VHDL代码无法分析。体系结构主体的结束状态应为
end ctrl
终端架构
结束架构ctrl而不是
结束喘息\u ctrl。模式
inout
端口信号的值是输出值和输入值之间的分辨率值。如果不临时控制哪个“端”在何时驱动什么值,并且您似乎没有尝试,则您试图将这两个信号
x
w
归为属性的函数似乎不可行。它也不太可能是合格的。