verilog 移位寄存器跟赋值关系求教 移位寄存器 verilog代码
verilog\u5de6\u79fb\u4f4d\u5bc4\u5b58\u5668\u5c31\u50cf\u697c\u4e0a\u56de\u7b54 \u4e00\u6837
always@(posdge clk)
begin
din[7:0] <= {din[6:0],datain}
end
module shift(
in,
clk,
en,
clr,
set,
out
);
input [7:0]in; //input data
input clk; //input clock
input en; //input enable high enable
input clr; //input clear low enable
input [2:0]set; //input set :set num of shift bit
output [7:0]out;
always@(posedge clk or negedge clr) begin: shift_reg
if(!clr) //asychro reset_n low enable
out <= 8'b0;
else if(en) begin //enable signal
case(set[2:0])
3'b0: out <= in[7:0]; //no shift
3'b1: out <= {in[0],in[7:1]};//shift 1bit
3'd2: out <= {in[1:0],in[7:2];//shift 2bit
... ...
//\u4e2d\u95f4\u8fd9\u6bb5\u81ea\u5df1\u5199\uff0c\u8981\u662f\u4e0d\u4f1a\u6211\u5c31\u649e\u5899\u4e86
default: out <= in[7:0];
endcase
end
end
【2】你按这个思路想:在hx被赋值以后,先保证hx不再被重复赋值冲掉数据,然后再移位操作。例如,赋值以后加一个使能信号,在使能信号下移位
【3】欢迎采纳!欢迎提问!
RTL CODE 不好写吧.
always @ (posedge clk) begin
hx <= {hx[7:2]^gx[5:0], hx[1:0], 1'b0};
x<=x+1'b1;
end
扩展阅读:gx developer移位寄存器 ... 寄存器左移右移怎么移 ... 移位寄存器仿真图 ... verilog实现循环移位 ... 双向移位寄存器verilog ... verilog 寄存器位 计数器 ... 数据分配器 verilog ... verilog 二维寄存器 ... 5级32位移位寄存器verilog ...