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

【1】你的理解是对的!你在一个always里面用两次非阻塞赋值,在一个时钟边沿处理同一个变量hx,就成了这样。
【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 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网