题解 | 序列发生器
序列发生器
https://www.nowcoder.com/practice/1fe78a981bd640edb35b91d467341061
该模块用于生成一个预定义的6位序列信号110100。在时钟信号clk的驱动下,模块会循环输出这个序列,直到复位信号rst_n被拉低。参数说明
SEQUENCE:定义了要生成的6位序列,值为6'b110100。SEQUENCE_LENGTH:定义了序列的长度,值为6。
在 Verilog 中,数组索引是从 0 开始的,SEQUENCE 数组的有效索引范围是 0 到 5。
`timescale 1ns/1ns
module sequence_generator(
input clk,
input rst_n,
output reg data
);
parameter SEQUENCE = 6'b110100;
parameter SEQUENCE_LENGTH = 6;
reg [2:0] cnt;
always @(posedge clk or negedge rst_n) begin
if(!rst_n) begin
cnt <= 3'b0;
data <= 1'b0;
end
else begin
if(cnt == SEQUENCE_LENGTH - 1'b1)
cnt <= 3'd0;
else
cnt <= cnt + 1'b1;
data <= SEQUENCE[cnt];
end
end
endmodule
