A.15 时序逻辑实例二:移位寄存器
简单的单向移位寄存器,由低位向高位移动,可以通过load加载设定移位寄存器的初始值。
设计模块
//文件路径:a.15/src/shifter.v
module shifter(clk,rst_n,load_enable,load_data,dout);
input clk;
input rst_n;
input load_enable;
input[7:0] load_data;
output[7:0] dout;
reg[7:0] shift_data;
always@(posedge clk)begin
if(!rst_n)
shift_data <= 'd0;
else begin
if(load_enable)
shift_data <= load_data;
else
shift_data <= {shift_data[6:0],shift_data[7]};
end
end
assign dout = shift_data;
endmodule
测试模块
//文件路径:a.15/sim/testbench/demo_tb.sv
module top;
logic clk;
logic rst_n;
logic load_enable;
logic[7:0] load_data;
logic[7:0] dout;
shifter DUT(.clk(clk),.rst_n(rst_n),.load_enable(load_enable),.load_dat