对于以下VHDL代码
对于以下VHDL代码,假设对于以下VHDL代码,vhdl,computer-science,Vhdl,Computer Science,对于以下VHDL代码,假设D在时间5 ns时更改为'1'。每次发生更改时,给出A、B、C、D、E、和F的值。也就是说,给出时间5 ns、5+增量、5+2(增量)等的值。执行此操作直到出现20个步骤,直到不再发生变化,或者直到出现重复模式 entity prob4 is port (D: inout bit); end prob4; architecture q1 of prob4 is signal A,B,C,E,F: bit; begin C <= A; A <=
D
在时间5 ns时更改为'1'
。每次发生更改时,给出A、B、C、D、E、
和F
的值。也就是说,给出时间5 ns、5+增量、5+2(增量)等的值。执行此操作直到出现20个步骤,直到不再发生变化,或者直到出现重复模式
entity prob4 is
port (D: inout bit);
end prob4;
architecture q1 of prob4 is
signal A,B,C,E,F: bit;
begin
C <= A;
A <= (B and not E) or D;
P1: proecess (A)
begin
B <= A;
end prcoess P1;
P2: process
wait until A <= '1';
wait for 0 ns;
E <= B after 5 ns;
D < = '0';
F <= E;
end process P2;
end architecture q1;
实体prob4是
端口(D:输入输出位);
末端探针4;
prob4的架构q1是
信号A、B、C、E、F:位;
开始
C呈现的问题
存在一些明显的语法错误:
entity prob4 is
port (D: inout bit);
end prob4;
architecture q1 of prob4 is
signal A,B,C,E,F: bit;
begin
C <= A;
A <= (B and not E) or D;
P1: proecess (A) -- misspelled process
begin
B <= A;
end prcoess P1; -- misspelled process
P2: process
-- begin -- missing begin
wait until A <= '1';
wait for 0 ns;
E <= B after 5 ns;
D < = '0'; -- should be "<=" (a single delimiter token signifying assignment)
F <= E;
end process P2;
end architecture q1;
ghdl-a prob4.vhdl
ghdl-e tb_问题4
ghdl-结核分枝杆菌问题4
./tb_问题4:错误:未解析信号的多个来源
对于信号:.tb_prob4(foo).ghdl:编译错误
通过使用适当的VHDL工具逐步模拟prob4的分析版本,理论上可以回答“问题”中提供的“问题”。这需要在5 ns时将D
强制为“1”,并在下一个增量循环(步骤后)在被测设备中释放它。否则这是一个无意义的问题,VHDL设计规范是无效的(见上文)。你可以猜测“假设D改变为'1'”是为了避免关于有效性的问题
解决问题
这个问题也可以用手(纸和铅笔)来解决
“…假设D在时间5ns时变为‘1’”听起来像是暗示了一个事件(没有持久力)
在VHDL中,未初始化的信号将采用最左边的值,对于位类型的枚举值,该值为“0”(请参阅软件包标准)。这告诉你什么东西都是5纳秒。(A,B,C,D,E,F的初始值是多少?)
通过分配到当前模拟时间来推断增量周期。当为当前模拟时间安排进一步的信号分配时,模拟时间提前。然后将模拟时间提前到下一次计划事务出现在建模设计层次结构的投影输出波形中
之后的在其目标的投影输出波形中调度信号事件。在本例中,这将是计划分配给D
的B
的当前值
模拟时间随着一个事件(等待,之后)提前到下一次,等待0 ns
指的是当前模拟时间,这会导致增量周期吗?请正确格式化您的代码,这将大大有助于我们帮助您。还有,你的问题是什么,你尝试了什么,你被困在哪里了。现在看来,你想让我们帮你做家庭作业,这是不行的。
entity tb_prob4 is
end entity;
architecture foo of tb_prob4 is
signal D: bit;
begin
DUT:
entity work.prob4 port map (D);
STIMULUS:
process
begin
D <= '1' after 5 ns;
wait;
end process;
end architecture;