module gal_3035_5_1 (co,ld,clk,d,ud,clr,Q); input ld,ud,clr,clk; input [3:0]d; outputreg [3:0]Q; outputreg co; always@(posedge clk) begin if(!clr) // clr为0时,不进行清零操作 begin if(ld) // ld为1时,进行置数操作 begin Q[3]=d[3]; Q[2]=d[2]; Q[1]=d[1]; Q[0]=d[0]; end else begin if(ud) //ud是1时,倒序置数 begin if(Q==4'b0000) begin Q<=4'b1001; co<=1; end else begin Q<=Q-1; co<=0; end end else// ud是0时,顺序置数 begin if(Q==4'b1001) begin Q<=4'b0000; co<=1; end else begin Q<=Q+1; co<=0; end end end end else begin Q<=4'b0000; end end endmodule