新手上路
- 积分
- 39
- 金钱
- 39
- 注册时间
- 2016-9-18
- 在线时间
- 13 小时
|
5金钱
本帖最后由 mxdpsp 于 2020-1-22 10:22 编辑
//Quartus II环境,Verilog语言
//代码如下:
module key_test(
input sys_clk, //PIN_E1
input key_1, //PIN_E15
input key_2, //PIN_M2
output reg test //PIN_A2
);
always @(negedge key_1 or negedge key_2) begin
test <= ~test;
end
//本意是按下key_1或key_2都会触发输出test翻转,但综合后查看RTL发现test被综合成了一个首尾相连的寄存器,和key_1,key_2完全无关,请问是为什么?
|
最佳答案
查看完整内容[请看2#楼]
“有很多莫名其妙的问题”,我理解会导致下面的问题:
1、除了外部信号触发,代码中一般还会有系统时钟触发的其它的always块,因为触发信号是异步的,会导致时序竞争与冒险,带来一些未知结果;
2、不是一个always块,甚至是用不同的信号触发的。而在不同的always块中,不能对同一个变量赋值,编译时会报错;
3、其它问题,望高手继续补充。。。
|