欢迎讨论
verilog&知识点问答
1 写一个64位的计数器,由于器件和时钟频率的限制,当计数器位宽大于17位时时序无法收敛。因此内部每一个计数器的位宽不能超过17位。可以采用拆分加法器的方式实现。计数器的使能信号为CntEn,高电平时开始计数,低电平时计数值保持。模块接口如下,请补全代码。
(诺瓦星云FPGA23)
module Counter(
input InClk,
input InRst,
input CntEn,
output[64-1:0] Cnt);
题解:
将64位的Cnt,分为四个16位计数器,Cnt <= {cnt3,cnt2.cnt1,cnt0}。当cnt0计满,cnt1加一;当cnt1计满,cnt2加一;当cnt2计满,cnt3加一。
2 复位
以下说法正确的是:
- 同步复位增加了时序收敛的难度
- 同步化异步复位可以保证逻辑正确复位
- 从使用资源的角度看,应候使用异步复位
- 异步复位可能会导致逻辑错误
(诺瓦星云FPGA23)
题解:
只要存在复位都会增加布局布线的负担,因为复位会连接到每一个寄存器中,会增加时序收敛的难度。
同步化异步复位结合了异步复位和同步复位的优势,因此可以保证逻辑正确复位。 异步复位容易使寄存器出现亚稳态,可能导致逻辑错误。
第三个选项要看 FPGA 。对于 Xilinx 来说,官方文档明确表示尽量避免使用异步复位,如果适应复位就用高复位,这与Altera的规则相反,这是因为内部结构决定的。对于 Altera 器件来说,使用同步复位会造成资源的浪费,所以才会有习惯性的思维(negedge rst_n)。
- 同步复位增加了时序收敛的难度
- 同步化异步复位可以保证逻辑正确复位
- 从使用资源的角度看,应候使用异步复位
- 异步复位可能会导致逻辑错误
参考博文
3 竞争冒险
3.1 引起组合逻辑电路发生竞争冒险的原因是()
- 信号串扰