vhdl结构编码的问题

时间:2014-06-02 15:46:46

标签: vhdl

下面的代码是一个简单的vhdl结构体系结构,但是, 对信号的并发分配,comb1,正在扰乱模拟 输出(tb_lfsr_out)和comb1变为未定义。请帮忙, 谢谢,路易斯。

library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity testbench is
end testbench;

architecture behavioural of testbench is

CONSTANT clock_frequency : REAL := 1.0e9;
CONSTANT clock_period : REAL := (1.0/clock_frequency)/2.0;

signal tb_master_clk, comb1: STD_LOGIC := '0';

signal tb_lfsr_out : std_logic_vector(2 DOWNTO 0) := "111";

component dff
port
  (
    q: out STD_LOGIC;
    d, clk: in STD_LOGIC
  );
end component;

begin

-- Clock/Start Conversion Generator
tb_master_clk <= (NOT tb_master_clk) AFTER (1 SEC * clock_period);

comb1 <= tb_lfsr_out(0) xor tb_lfsr_out(2);

dff6: dff port map (tb_lfsr_out(2), tb_lfsr_out(1), tb_master_clk);
dff7: dff port map (tb_lfsr_out(1), tb_lfsr_out(0), tb_master_clk);
dff8: dff port map (tb_lfsr_out(0), comb1, tb_master_clk);

end behavioural;

1 个答案:

答案 0 :(得分:0)

它比 Radix Ciano (1)说得更复杂一点。所有tb_lfsr_out元素都显示为“&#39; U&#39;从Now = 0 ns。原因是所有的D触发器都没有被初始化。

所有tb_lfsr_out元素都显示了&#39; U&#39;从Now = 0 ns。原因是所有的D触发器都没有被初始化。

如果您重置所有触发器,结果将始终为&#39; 0&#39;没有&#39; 1&#39;在异或门中引起翻转。

预设D触发器(可在FPGA实现中免费提供):

testbench with D flip flops preset, corrected waveforms for dff8

只需添加默认值即可完成此操作:

q:      out std_logic := '1';

(1)是的,这是一个小小的改变,并且在所有情况下有人改变了他们的用户名,如果被问到我会将Radix改为Ciano。仅仅为了超越门槛而做出改变是荒谬的。

这个答案的全部目的是避免踩到其他回答者的作者权利,现在他已经完成了这件事。答案的问题在于,当所有输入都是“0”或任何输入都是元值时,XOR的免费属性阻止了LFSR的工作。

虽然你没有注意到现在已经纠正过的波形中的错误,显然在玩回答编辑的游戏时过于专注。 (标签dff8之后的信号实际上来自dff7)。

这里有一条问题形式的信息。回答stackoverflow问题的目的是什么?见Why I no longer contribute to StackOverflow 。并且请注意里希特先生的声誉继续向上,包括goto的例子,他引用的可能会引发严重的愤怒。 (而且所有小编辑都有耐心,迟早你的声誉会达到自我维持的水平,除非系统被改变以防止它出现。)

另请注意,该问题的作者至今已经过一段时间,并且在一个充满激情的请求结束他的问题后,并未表示接受或使用任何答案。

同时退出破坏为什么我通过改变我写的字来回答关于VHDL的问题,尽管我不得不承认编辑投票历史是有趣的。