gpt4 book ai didi

verilog - 24位计数器状态机

转载 作者:行者123 更新时间:2023-12-04 23:07:28 27 4
gpt4 key购买 nike

我正在尝试在verilog中创建一个计数器,它计算已经有多少个时钟周期,在一千万之后它将重置并重新开始。

我创建了一个 24 位加法器模块以及另一个包含 24 个 D 触发器的模块,以存储从加法器输出的周期数。

然后我想要一个处于计数状态的状态机,直到一千万个周期过去,然后它进入重置状态。

这听起来对吗?问题是我不确定如何实现状态机。

谁能给我指一个可以帮助我解决这个问题的网站/书?

谢谢

最佳答案

正如 Paul S 已经提到的,如果您希望计数器在溢出后继续计数,则不需要状态机。您可以执行以下操作(未经测试,可能包含拼写错误):

module overflow_counter (
clk,
reset,
enable,
ctr_out
);

// Port definitions
input clk, reset, enable;
output [23:0] ctr_out;

// Register definitions
reg [23:0] reg_ctr;

// Assignments
assign ctr_out = reg_ctr;

// Counter behaviour - Asynchronous active-high reset
initial reg_ctr <= 0;
always @ (posedge clk or posedge reset)
begin
if (reset) reg_ctr <= 0;
else if (enable)
begin
if (reg_ctr == 10000000) reg_ctr <= 0;
else reg_ctr <= reg_ctr + 1;
end
end

endmodule

当然,通常您会使用参数,这样您就不必在每次需要溢出计数器时都创建自定义模块。我会把它留给你;)。

[编辑] 这里有一些文件可以帮助你使用 FSM。我刚刚在 Google 上搜索了“verilog 状态机”:
  • EECS150: Finite State Machines in Verilog
  • Synthesizable Finite State Machine Design Techniques

  • 我还没有读过第一篇论文,所以我不能对此发表评论。第二个展示了各种编码 FSM 的风格,其中 3 种总是阻塞风格,我强烈推荐,因为它更容易调试(状态转换和 FSM 输出被巧妙地分开)。链接好像挂了,所以这里是 the cached Google result .

    关于verilog - 24位计数器状态机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7931789/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com