1、8位并行数据输入转串行数据输出,采用移位方式,代码如下:
module shift
(
clk,rst_n,
din,dout
);
parameter Num=8;
output dout; //串行数据输出
input clk; //控制时钟
input rst_n; //复位信号,低电平有效
input [Num-1:0]din; //并行数据输入
reg dout;
reg [Num-1:0]din_reg; //并行数据寄存器
reg [2:0]cnt;
//右移 ,补高位
always @(posedge clk,negedge rst_n)begin
if(!rst_n) //异步复位
begin
dout <= 0;
din_reg<=3’d0;
end
else
if(cnt<3’d7)
begin
din_reg <= din_reg >>1; //寄存器内容右移一位
dout<= din_reg[0];
cnt<=cnt+1’b1;
end
else
begin
dout<= din_reg[0];
din_reg<=din;
cnt<=2’d0;
end
end
endmodule