4 位计数器2025年3月17日 | 阅读 3 分钟 4位计数器从4'b0000开始递增到4'h1111,然后返回到4'b0000。只要提供一个运行中的时钟,并且复位保持高电平,它将持续计数。 当最终加法的最高有效位被丢弃时,就会发生回滚。当计数器达到最大值4'h1111并获得另一个计数请求时,计数器尝试达到5'b10000,但由于它只能支持4位,MSB将被丢弃,结果为0。 该设计包含两个输入,一个用于时钟,第二个用于低电平有效的复位。低电平有效的复位是指当复位引脚的值为0时,设计被复位。有一个4位输出称为out,它本质上提供计数器值。 ![]() 电子计数器示例module 计数器将时钟和低电平有效的复位(n)作为输入,并将计数器值作为4位输出。 只要时钟从0变为1,就会执行always块,这表示正沿或上升沿。 仅当复位保持高电平或1时,输出才递增,这通过if-else块实现。如果复位在时钟的正沿为低电平,则输出将复位为默认值4'b0000。 测试平台 我们可以将该设计实例化到我们的测试平台模块中,以验证计数器是否按预期计数。 ![]() 测试平台模块被命名为tb_counter,并且不需要端口,因为这是仿真中的顶级模块。但是,我们需要有内部变量来生成、存储和驱动时钟和复位。 为此,我们声明了两个reg类型的变量用于时钟和复位。我们还需要一个wire类型的网络来与设计的输出建立连接;否则,它将默认为1位标量网络。 时钟通过always块生成,这将提供10个时间单位的周期。initial块用于设置我们的内部变量的初始值并驱动设计的复位值。 该设计在测试平台中实例化,并连接到我们的内部变量,以便在从测试平台驱动它们时获得值。 我们的测试平台中没有任何$display语句,因此我们不会在控制台中看到任何消息。 请注意,当低电平有效的复位变为0时,计数器复位为0,当复位在约150ns处取消断言时,计数器从时钟正沿的下一个出现开始计数。 硬件原理图 ![]() 下一主题Verilog Mod-N计数器 |
我们请求您订阅我们的新闻通讯以获取最新更新。