本文是参考https://blog.youkuaiyun.com/vivid117/article/details/102021707这篇文章后结合自己的理解后修改的。
1.串并转换模块
可以用两种方式来实现串并转换,一种是移位寄存器,另一种是计数器,这里只用移位寄存器,计数器的可以参考上面的博客
用verilog语言描述为:data<={data[6:0],data_in}
data为8位输出寄存器,移位拼接符内的变量位置不同那么移位方向不同。
本次实现串并转换与上面提到的博客中略有不同,增加了一个输出寄存器,这样可以锁存输出,防止在移位过程中数据变化。
`timescale 1 ns/ 1 ns
module serial2parallel(
input clk,
input rst_n,
input en,
input data_i,
output reg [7:0] data_o
);
reg [7:0] data;//输出寄存器
reg [2:0] count;//计数器,控制并行数据更新,8位数据
//初始化
always@(posedge clk or negedge rst_n)
begin
if(rst_n==1'b0)
count<=3'b0;
else if(en==1)
count<=count+3'b1;
end
//移位
always@(posedge clk or negedge rst_n)
begin
if(rst_n==1'b0)
data<=8'b0;
else if(en==1'b1)
data<={data[6:0],data_i};
end
//数据输出
always@(posedge clk or neged

本文详细介绍了使用Verilog语言实现串并转换和并串转换的两种方法,包括移位寄存器和计数器的运用。通过具体的代码示例,展示了如何在数字电路设计中有效进行数据格式的转换。
最低0.47元/天 解锁文章
2万+





