请教串并转换程序,verilog语言编写的
module transform (clk, rst, sp, Ds, Dp);
inout Ds;
inout [7:0] Dp;
input clk, rst, sp;
reg Dst,sign;
reg [7:0] Dpt;
reg [3:0] counter1, counter2;
assign Ds=sp?1'bzst;
assign Dp=!sp?8'bzpt;
always @ (posedge clk or negedge rst)
if(!rst) //寄存器初始化
begin
Dpt<=0;
Dst<=0;
sign<=1;
counter1<=0;
counter2<=0;
end
else if(sp&&(counter1<=7))//串转并
begin
Dpt[0]<=Ds; //将串型输入赋给临时并型寄存器的最低位
Dpt[7:1]<=Dpt[6:0]; //临时并型寄存器的低7位向左移一位。
counter1<=counter1+1;
end
else if(!sp&&sign) //先于转换,将并型输入信号暂存到dpt中,并将sign赋0,以防反复向dpt赋值。
begin
Dpt<=Dp;
sign<=0;
end
else if(!sp&&(counter2<=7))//并转串
begin
Dpt[7:1]<=Dpt[6:0]; //临时并型寄存器的低7位向左移一位。
Dst<=Dpt[7]; //把最高位赋给输出。
counter2<=counter2+1;
end
endmodule
kankan
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |