题解 | #序列发生器#
序列发生器
https://www.nowcoder.com/practice/1fe78a981bd640edb35b91d467341061
三种实现方式
`timescale 1ns/1ns
module sequence_generator(
input clk,
input rst_n,
output reg data
);
reg [2:0] cnt;
// 实现一
// always @ (posedge clk or negedge rst_n) begin
// if(~rst_n) begin
// cnt <= 0;
// data <= 0;
// end
// else if(cnt == 5) begin
// cnt <= 0;
// data <= 1;
// end
// else if(cnt == 4) begin
// cnt <= cnt + 1;
// data <= 1;
// end
// else if(cnt == 3) begin
// cnt <= cnt + 1;
// data <= 0;
// end
// else if(cnt == 2) begin
// cnt <= cnt + 1;
// data <= 1;
// end
// else if(cnt == 1) begin
// cnt <= cnt + 1;
// data <= 0;
// end
// else if(cnt == 0) begin
// cnt <= cnt + 1;
// data <= 0;
// end
// end
//实现二
// always @ (posedge clk or negedge rst_n) begin
// if(~rst_n) begin
// cnt <= 0;
// end
// else if(cnt == 6) begin
// cnt <= 1;
// end
// else
// cnt <= cnt + 1;
// end
// always @(*) begin
// case(cnt)
// 3'd0: data = 0;
// 3'd1: data = 0;
// 3'd2: data = 0;
// 3'd3: data = 1;
// 3'd4: data = 0;
// 3'd5: data = 1;
// 3'd6: data = 1;
// default:data = data;
// endcase
// end
//实现三
reg [5:0] data_r = 6'b001011;
always @(posedge clk or negedge rst_n)begin
if(!rst_n)
data <= 0;
else begin
data <= data_r[5];
data_r <= {data_r[4:0], data_r[5]};
end
end
endmodule
查看11道真题和解析