Verilog之串并转换

这篇具有很好参考价值的文章主要介绍了Verilog之串并转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.串行转并行

1.1 利用移位寄存器

采用位移拼接技术,当使能信号发出时,进行移位输出(注意低位和高位先赋值表达方式不同);当使能信号无时,后续数据不发出。

module serial_parallel(
    input           clk,
    input           rst_n,en,
    input           data_i,   //一位输入
    output   reg [7:0] data_o	//8位并行输出
    );

always @(posedge clk or negedge rst_n) begin
	if (!rst_n)
		data_o <= 8'd0;
	else if (en)
		data_o <= {data_o[6:0], data_i};	//低位先赋值
		//data_o <= {data_i,data_o[7:1],};	//高位先赋值
	else
		data_o <= data_o;
end

endmodule

1.2 利用计数器

利用计数器,每过一个周期移动一位,数据输出一位;

​
module serial_parallel(
    input           clk,
    input           rst_n,en,
    input           data_i,   //一位输入
    output   reg [7:0] data_o	//8位并行输出
    );

reg [2:0]cnt;//如果data位数不是刚好为7,那么还需要考虑加到最大值后回到0的情况
always @(posedge clk, negedge rst_n)begin
  if(!rst_n)
    cnt<=3'd0;
  else 
    cnt<=cnt+1'b1;
end

always @(posedge clk, negedge rst_n)begin
  if(!rst_n)
    data_o<=8'd0;
  else
    data_o[7-cnt]<=data_i;//最先输入最高位
    //data_o[cnt]<=data_i;//最先输入最低位
end

endmodule

​

2. 并行转串行

思路是:先将八位数据暂存于一个四位寄存器器中,然后左移输出到一位输出端口,这里通过一个“移位”指令,使能信号en表示开始进行并行到串行的转换文章来源地址https://www.toymoban.com/news/detail-790736.html

module parallel_serial(clk, rst_n, en, data_i, data_o);
	
	input clk, rst_n,en;
	input [7:0] data_i;
	output data_o;

	reg [7:0]data_buf;
    always @(posedge clk, negedge rst_n)begin
      if(!rst_n)
         data_buf<=8'd0;
      else if(en)
         data_buf<=data_i;
      else
         data_buf<=data_buf<<1;//未使能就移位,先输出最高位
    end
    
    assign data_o=data_buf[7];

endmodule

到了这里,关于Verilog之串并转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • FPGA学习笔记:verilog基础代码与modelsim仿真(三)

    FPGA学习笔记:verilog基础代码与modelsim仿真(三)

    1. 分频器——偶分频 方法1: verilog代码实现: modelsim仿真波形图: 方法2(推荐): 比起方法一直接使用计数器定义一个新的时钟波形,方法二使用flag_out作为分频变量从而实现分频器的功能。虽然二者都使用了计数器,但方法二显然更符合“分频”的定义,且此方法在告诉

    2024年02月06日
    浏览(9)
  • FPGA学习笔记:verilog基础代码与modelsim仿真(六)——vga显示模块

    FPGA学习笔记:verilog基础代码与modelsim仿真(六)——vga显示模块

    VGA显示 目标:实现屏幕红、橙、黄、绿、青、蓝、紫、黑、白、灰条形显示 1. 模块框图与波形图 vga_colorbar是实现目标功能的总体模块框图,为了实现对应的输出,我们使用三个具体功能模块实现功能。 (1) clk_gen——使用pll锁相环实现时钟分频 (2)vga_ctrl——图像控制与输出模

    2024年02月04日
    浏览(15)
  • verilog数组的定义、转换和加法器的实现

    verilog数组的定义、转换和加法器的实现

    看了别人的博客有的人也称reg [31:0] add0[0:12]这样的数组为二维数组,其实中二维数组不是真正意义上的数组,而是由多个寄存器组成的ROM或者RAM。我觉得这样理解好记一点:这个是一维数组,一共有0到12共13组数据,每组数据的宽度是0到31一共32个位宽。 优势:简单易于编程

    2024年02月11日
    浏览(11)
  • Verilog实现32位到8位数据位宽转换

    Verilog实现32位到8位数据位宽转换 数据位宽的转换在数字电路设计中是一项必要的任务。在FPGA中,通过Verilog语言实现数据位宽转换可以有效地减小硬件资源的占用,提高系统效率。本篇文章将介绍如何使用Verilog语言实现32位到8位的数据位宽转换。 首先,我们需要定义输入和

    2024年02月10日
    浏览(7)
  • 用verilog 实现8bit数据的并串转换

    用verilog 实现8bit数据的并串转换

    输入信号为8bit并行信号 该程序实现每8个时钟周期,便把收到的8bit并行信号拆解成串行信号并输出,等下8个时钟周期过后再转换下一个并行信号。 仿真图如下:

    2024年02月15日
    浏览(13)
  • (45)Verilog实现数据位宽转换【8位-32位】

    1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog实现数据位宽转换【8位-32位】 5)结语 FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有

    2024年02月08日
    浏览(8)
  • FPGA——verilog实现格雷码与二进制的转换

    FPGA——verilog实现格雷码与二进制的转换

    格雷码是一种循环二进制码或者叫作反射二进制码。跨时钟域会产生亚稳态问题(CDC问题):从时钟域A过来的信号难以满足时钟域B中触发器的建立时间和保持时间,输入与clk的变化不同步而导致了亚稳态。此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的

    2024年02月15日
    浏览(11)
  • v2c - 从Verilog 转换到 C语言的工具

    v2c - 从Verilog 转换到 C语言的工具

    v2c是一个Verilog到C的翻译工具。给定一个 在 Verilog 硬件描述语言中寄存器传输级别 (RTL) 硬件电路的描述 (HDL),用于自动翻译Verilog RTL 电路转换为用C语言表示的软件程序。这 软件程序称为软件网表。 我们为 Linux 分发 v2c 的预编译静态二进制文件系统 下载二进制文件 下

    2024年02月06日
    浏览(7)
  • 【FPGA实战】Verilog数据位宽转换实现【64位-8位】

    【FPGA实战】Verilog数据位宽转换实现【64位-8位】 数据位宽转换是FPGA设计中常见的需求,本文将介绍如何使用Verilog语言实现将64位数据转换为8位数据的操作。 首先,我们需要了解一些基础知识。在Verilog中,数据位宽可以用方括号来表示,例如:[63:0]表示一个64位的数据,[7

    2024年02月08日
    浏览(72)
  • ASIC-WORLD Verilog(3)第一个Verilog代码

    ASIC-WORLD Verilog(3)第一个Verilog代码

            在自己准备写一些简单的verilog教程之前,参考了许多资料----asic-world网站的Verilog教程即是其一。这套教程写得极好,奈何没有中文,在下只好斗胆翻译过来(加了自己的理解)分享给大家。         这是网站原文:Verilog Tutorial         这是系列导航:Verilo

    2023年04月16日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包