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

时间:2014-12-02 08:08:55

标签: vhdl fpga

实际上我想制作一个能够启用锁存器的本地控制器。 正如您在下面的代码中看到的那样,信号en将从w AND x获取输出以启用锁存器。之后,w和x将获取en。例如,最初,假设w和x值从1开始,en将变为1并使锁存器从data_in获取数据到data_out。之后,en将成为w和x的输入并导致锁存器禁用。但是,当我使用大学波形程序进行测试时,电路没有工作。 data_out没有取data_in的值。我无法弄清楚我在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;

1 个答案:

答案 0 :(得分:1)

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

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

如果您不想描述异步门和延迟,那么您必须手动实例化基元,否则合成编译器将优化您的线并抱怨信号循环。