我正在做一个大学的任务,要求在VHDL中实现一个上/下异步计数器 .
我的实现包括使用控制变量 ctrl ,所以当它为0时,计数器按升序计数,否则计入后代 .
我已实现的代码(在该学科中,我们使用Quartus 13和FPGA Cyclone IVE EP4CE129C7进行仿真)在此link中 . 但是,结果simulation仅显示输出q0和q1的'0' .
那么,代码中可能存在瓶颈,以便发生这种情况?
我正在做一个大学的任务,要求在VHDL中实现一个上/下异步计数器 .
我的实现包括使用控制变量 ctrl ,所以当它为0时,计数器按升序计数,否则计入后代 .
我已实现的代码(在该学科中,我们使用Quartus 13和FPGA Cyclone IVE EP4CE129C7进行仿真)在此link中 . 但是,结果simulation仅显示输出q0和q1的'0' .
那么,代码中可能存在瓶颈,以便发生这种情况?
1 回答
我不是一个用户,所以不熟悉波形查看器的限制,但这看起来像是从类型BIT迁移到类型Std_Logic . 默认值(除非另有说明,Std_Logic(Std_ULogic)为'U',而BIT为'0') .
这会导致您将FFT q的NOT'U'分配给MUX的输入 . 结果是您的触发器永远不会被赋予除“U”以外的值 .
从std_logic_1164包中:
不是'U'是'U' .
使用显示“U”值的波形查看器:
这是通过ghdl和gtkwave以及添加的测试平台完成的 . 对Taraefa09的架构弧的唯一更改是添加sq0_n并将其分配给并发信号:
在I1:Mux2x1的第一个实际中,将sq0_n替换为sq0 . ghdl不支持与实际输入一起使用的函数 .
解决方案是a)复位触发器或b)使用BIT类型或c)在FFT中为q0提供默认值 . 除非您的目标设备提供已知的默认(初始)值,否则选择a)将是首选 .
事实证明还有其他错误:
这表示选择c)触发器中实际q的默认值(名为sq) . 触发器的类型称为触发器触发器或T触发器 .
在这一点上,我们得到: