//----------------------------------------------------------------------------------- // DESCRIPTION : Shift register //
Type : univ //
Width : 4 //
Shift direction: right/left (right active high) // //
CLK active : high //
CLR active : high //
CLR type : synchronous //
SET active : high //
SET type : synchronous //
LOAD active : high //
CE active : high //
SERIAL input : SI // // Download from : http://www.pld.com.cn //-----------------------------------------------------------------------------------
module shft_reg (CLR , SET , DIR , CE , LOAD , DATA , SI , data_out
, CLK ); input CLR , SET , CE , LOAD , DIR , SI , CLK ; input [3:0] DATA ; output [3:0] data_out ;
reg [3:0] TEMP;
always @(posedge CLK ) begin if (CE == 1'b1) if (CLR == 1'b1) TEMP = {4{1'b0}}; else if (SET == 1'b1) TEMP = {4{1'b1}}; else if (LOAD == 1'b1) TEMP = DATA ; else if (DIR == 1'b1) TEMP = {SI , TEMP [3:1]}; else TEMP = {TEMP [2:0], SI }; end