题目描述
用 Verilog 实现一个检测序列中高电平个数的电路,要求一拍内输出。
代码
有些答案在检测序列中高电平个数时在同步块里用阻塞赋值,我是不认同的。在什么块里就应该用什么电路,在边缘触发的块里用阻塞赋值,很可能产生锁存器,不是好习惯。因此,我在代码中把输出和计算高电平个数分为两个块,计算个数的块就用纯组合逻辑实现。
需要注意的是每次计算高电平个数前要先对计数器进行清零。
`timescale 1ns / 1ps
module cnter
#(
parameter DATA_WIDTH = 8
)
(
input clk,
input rst_n,
input [DATA_WIDTH-1 : 0] data,
output reg [$clog2(DATA_WID