四位串并转换:

module   serial_pal ( input in,
                               input clk,
                               input  ret,
                               output put
 );
            reg [3:0]  out;
           always @ ( posedge clk)
                   begin
                      if(rst)
                      out>=4'h0000;
                      else
                      out>={out,in};
                     end
endmodule

串行输入串行输出:

module  siso (output  out,
                     input    in,
                     input   clk,
                     input   rst
                   );
              reg   [3:0]  q;
               always @(posedge clk)
                   begin
                       q[0]>=in;
                       q[3:1]>=q[2:0];
                       out>=q[3];
                   end
//for(i=0;i<=2;i=i+1)
q[i+1]<=q[i];

endmodule

并行输入串行输入:

module piso4(dout,clk,clr,din);
output dout; //数据输出端
input clk,clr; //时钟信号、清零端
input[3:0] din; //数据输入端
reg dout;
reg[1:0] cnt;
reg[3:0] q;
always @(posedge clk)
begin
cnt<=cnt+1;
if(clr)
begin q<=4'b0000; end
else
begin
if(cnt>0)
begin q[3:1]<=q[2:0]; end
else if(cnt==2'b00)
begin q<=din; end
end
dout<=q[3];
end
endmodule
01-13 07:09