4位双向移位寄存器(行为描述)

module cy4(input S1,S0,//选择输入端口声明
           input DSR,DSL,//串行数据输入
		   input CP,CR,//时钟和清零输入
		   input[3:0] D,//并行数据输入
		   output reg[3:0]Q//输出端口及变量的数据类型声明
           );
always @(posedge CP or negedge CR)
if(!CR) Q <= 4'b0000;
else
  case({S1,S0})
    2'b00:Q <= Q;//输出保持不变
	2'b01:Q <= {Q[2:0],DSR};//右移
	2'b10:Q <= {DSL,Q[3:1]};//左移
	2'b11:Q <= D;//并行置数
  endcase
endmodule

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41982581/article/details/82777161