作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的主要代码。该功能是在我切换时打开或关闭灯。
也许 t 触发器可以提供帮助?
module demo(
input switch1,switch2,
output reg light=1'b0
);
always@(switch1 or switch2)
begin
light <= ~light;
end
endmodule
和测试台
`timescale 1ns/100ps
module demo_test;
reg switch1,switch2;
wire light;
demo d1(.switch1(switch1),
.switch2(switch2),
.light(light));
initial
begin: in_set_blk
#0 switch1 =1'b0;
switch2 =1'b0;
$display ($time, "light=%d \n",light);
#10 switch1 =1'b1;
switch2 =1'b0;
$display ($time, "light=%d \n",light);
#10 switch1 =1'b0;
switch2 =1'b0;
$display ($time, "light=%d \n",light);
#10 switch1 =1'b0;
switch2 =1'b1;
$display ($time, "light=%d \n",light);
#10 switch1 =1'b0;
switch2 =1'b0;
$display ($time, "light=%d \n",light);
#10 $stop;
#10 $finish;
end
endmodule
这是modelsim的波形图;我认为它运作良好:
最佳答案
是的,问题是您的 demo
模块 Verilog 代码不可合成。
并非所有合法的 Verilog 代码都是可合成的。综合工具可以识别特定的编码模式,但您的代码与这些模式中的任何一个都不匹配。您的 FPGA 工具集应该有说明综合支持的语法的文档。
这就是为什么您的 RTL 查看器工具会为您提供一个奇怪的图表。
以下是模拟的工作原理。在 time=0 时,您设置了 light
和 2 个开关输入为 0。在 time=10 时,您更改 switch1
为 1。这会触发 always
block ,执行 light <= ~light;
任务。这套light=1
.
每次任一输入更改时,always
block 被触发,导致 light
切换。
如果这是您希望设计工作的方式,则应考虑使用边缘检测器。但是,这需要触发器和时钟。
关于verilog - 使用Verilog实现光控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68111772/
我是一名优秀的程序员,十分优秀!