绪论

在一些应用中,两个电路模块交界处,一个电路模块的输出数据位宽大于另一个模块的输入数据位宽,此时需要进行数据转换。例如,在SATA控制器中,内部数据位宽为32比特,但是与外部物理收发器PHY的接口通常为16比特或8比特。同样的,从PHY接收到的数据也是16比特或8比特,数据交给控制器后,在其内部使用之前转换为32比特。下面将介绍进行数据宽度转换的电路,电路中没有使用FIFO,是通过时钟分频与倍频实现数据位宽转换和传输的。

由宽到窄数据转换

图6.30是位宽由宽变窄时的示意图。6.31是数据转换波形示意图。

电路模块B的工作时钟为clk2x,在电路模块A中将其二分频得到clklX。clk1x与clk2x之间有一个同定的相位 差。根据图6.30和图6.31,具体的数据传输过程如下:

  • clklx下方的数据datain[31:0]经过clk2x采样产生datain_sync[31:0],由于clk1x在相位上滞后于clk2x且二者为同步时钟,因此数据从时钟域clklx传递到时钟域clk2x时不会存在问题;

  • 在clk2x时钟域内,当clklx为0时,使用clk2x选择datain_sync的低16比特,当clklx为1时,选择datain_sync的高16比特;

  • 完成数据变换,最终输出dataout_clk2x[15:0]。

代码及仿真结果如下。

module wide_to_narrow
(clk2x,
clklx,
datain,
dataout_clk2x);input   clk2x;
input   clklx;
input [31: 0]   datain;
output [15: 0]   dataout_clk2x;
//***************************************reg [31:0]    datain_sync;
reg [15:0]  dataout_clk2x;
wire [15:0]  dataout_clk2x_nxt;// Flop the data first with clk2x. Reset is not required as it is a datapath and
// default (reset) value of the flops are don’t care.
//***************************************always @(posedge clk2x)
begindatain_sync <- datain;
end// Select the lower and upper halves from datain_sync
//***************************************assign dataout_clk2x_nxt = !clk 1 x ? datain_sync[15:0] :datain_sync[31:16];// Flop the selected 16 bit data with clk2x and drive out
//***************************************always @(posedge clk2x)
begindataout_clk2x <= dataout_clk2x_nxt;
endendmodule

由窄到宽数据转换

图6.32和图6.33是实现由窄到宽数据转换操作的电路和工作波形。

代码及仿真结果如下。

module narrow_to_wide
(clk2x,
clklx,
data16,
data32_clk1x);input   clk2x;
input   clklx;
input [15: 0]   data16;
output [31: 0]   data32_clk1x;
//***************************************reg [15:0]    data16_tmp;
reg [31:0]  data32_clk1x data32_clk1x_nxt;/* store temporary data into a register
along with the 16 bits of tmp data stored in pervious cycle to form 32 bits of data.
These 32 bits of data is flopped with clklx, and this happens for every two-clock
periods of clk2x.When data is passed from 2x (fast) to the lx (slow) domain, make sure that there is
enough delay in the data path to avoid set-up/hold violation in the immediate risi
edge of lx clock. The data should have more delay in the path to pass beyond
immediate rising edge of 1x clock*///***************************************always @(posedge clk2x)
begindatal6_tmp <= #2 datal 6;
end
// Form the 32-bit dataassign data32_clklx_nxt = {datal 6[15:0], data16_tmp[l5:0]};
// Flop the selected 16 bit data with clk2x and drive out
always @(posedge elklx)
begindata32_clklx <= data32_clklx_nxt;
end
endmodule

NOW

学习Xilinx FPGA最好的资料其实就是官方手册,下表总结了部分手册的主要介绍内容,关注我,持续更新中......

文件名 主标题 内容简单介绍 是否有中文版
UG476 7 Series FPGAs GTX/GTH  Transceivers GTX和GTH介绍,PCIe、serdes等学习必备
UG471 7 Series FPGAs SelectIO Resources 描述 7 系列 FPGA 中可用的 SelectIO资源。
UG1114 PetaLinux Tools Documentaton PetaLinux 工具文档 参考指南 是,V2019.2
UG949 UltraFAST 设计方法指南(适用于 Vivado  Design Suite) 赛灵思® UltraFast™  设计方法是用于为当今器件优化设计进程的一套最佳实践。这些设计的规模与复杂性需要执行特定的步骤与设计任务,从而确保设计每一个阶段的成功开展。依照这些步骤,并遵循最佳实践,将帮助您以最快的速度和最高的效率实现期望的设计目标 是,V2018.1
IP手册 pg057 FIFO Generator FIFO生成器IP使用手册
pg104 Complex Multiplier 复数乘法器IP使用手册
pg122 RAM-Based Shift Register  移位寄存器IP使用手册

推荐阅读

【Vivado那些事】如何查找官网例程及如何使用官网例程

【Vivado使用误区与进阶】总结篇

【Vivado那些事】Vivado中常用的快捷键(二)其他常用快捷键

SystemVerilog数字系统设计_夏宇闻 PDF

图书推荐|ARM Cortex-M0 全可编程SoC原理及实现

简谈:如何学习FPGA

1202年了,还在使用虚拟机吗?Win10安装Ubuntu子系统及图形化界面详细教程

Github 上有哪些优秀的 VHDL/Verilog/FPGA 项目

AD936x+ZYNQ搭建收音机(一)

AD936x+ZYNQ搭建OpenWIFI

无招胜有招-Vivado非工程模式下的详细设计

面试中经常会遇到的FPGA基本概念,你会几个?

Xilinx FPGA MIPI 接口简单说明

Vivado ML(机器学习) 2021尝鲜

推荐一些可以获取免费的国外的原版书籍(电子版)网站

【Vivado那些事】FPGA的配置方式

FPGA 的重构

浅析FPGA局部动态可重构技术

ISP(图像信号处理)算法概述、工作原理、架构、处理流程

国产CPU概括

从电子游戏历史看IC发展的助推剂

80年代电子游戏及电脑游戏的发展历史

PCIe总线的基础知识

万字长文带你回顾电子游戏的七十多年历史(完整版)

FPGA中异步复位,同步释放的理解

OpenFPGA系列文章总结

用Verilog设计一个16 位 RISC 处理器

介绍一些新手入门FPGA的优秀网站(新增)

Verilog数字系统基础设计-CRC

FPGA 的布局规划艺术

Verilog数字系统基础设计-奇偶校验

建立和保持时间及时序简单理解

(Xilinx)FPGA中LVDS差分高速传输的实现

Xilinx Multiboot实例演示

高速串行通信常用的编码方式-8b/10b编码/解码
Verilog计时(微秒、毫秒和秒)脉冲的产生及同步整形电路

再说System Verilog 与 Verilog 的关系

图书推荐|一本图像/视频处理的强大工具书

Verilog HDL-同步技术

再说System Verilog 与 Verilog 的关系

数模混合信号建模语言Verilog-AMS

数字系统重要指标-吞吐率和时延

Verilog数字系统基础设计-数据转换器相关推荐

  1. Verilog数字系统基础设计-LFSR

    Verilog数字系统基础设计-LFSR 引言 LFSR(线性反馈移位寄存器)用于产生可重复的伪随机序列PRBS,该电路由n级触发器和一些异或门组成.在每个时钟周期内,新的输入值会被反馈到LFSR内部 ...

  2. Verilog数字系统基础设计-扰码与解扰

    Verilog数字系统基础设计-扰码与解扰 扰码可以对原始的用户数据进行扰乱,得到随机化的用户数据.发送电路在发送数据前先对数据进行随机扰乱,接收电路使用相同的扰乱算法重新恢复出原始的数据. 什么是扰 ...

  3. Verilog数字系统基础设计-CRC

    CRC(循环冗余校验) CRC介绍 临时"插播",后面有实例. CRC(Cyclic Redundancy Check,循环冗余校验)是数据帧传输中常用的一种差错控制编码方式,针对 ...

  4. 数字系统课程设计——VHDL密码锁控制器

    @数字系统课程设计 VHDL密码锁控制器 VHDL语言设计的密码锁控制器,模拟仿真平台为vivado 2018.(学生:慌慌和张张) 使用器材:Nexys4 DDR Artix-7 FPGA 设计软件 ...

  5. 高速数字系统时钟设计-AD9516

    此篇是我在学习中做的归纳与总结,其中如果存在版权或知识错误请直接联系我,欢迎留言. PS:本着知识共享的原则,此篇博客可以随意转载,但请标明出处! 在高速数字系统中,时钟起到至关重要的作用,它决定系统 ...

  6. Verilog数字系统教程学习——Verilog语法的基本概念

    Verilog HDL是一种用于数字系统设计的语言.Verilog HDL既是一种行为描述语言也是一种结构描述语言. 行为描述--逻辑--reg型变量 结构描述--连线--wire型变量 这就是说,无 ...

  7. 数字系统重要指标-吞吐率和时延

    数字系统重要指标-吞吐率 吞吐率被定义为数字电路单位时间内传输数据的量或单位时间完成的工作量.传输的数据越多或做的工作越多,则吞吐率越高.吞吐率有时候和性能.带宽可以互换使用.对于CPU来说,吞吐率定 ...

  8. logisim数据选择器_利用Logisim构建小型数字系统(运动码表)

    本文主要介绍的是中国大学mooc上"计算机硬件系统设计"课程中的一个实验.首先,我对本课程的课程组深表感谢,开发了这么好的学习资源供学生在线学习. 下面介绍的是这个实验的设计过程. ...

  9. 数字逻辑课程设计,简单的8位模型计算机verilog设计

    简单8位模型计算机 0.摘要 1.绪论 1.1 模型计算机简介 1.2 设计主要内容 1.2.1 设计指标 1.2.2 设计思路 2.系统设计 2.1模型计算机原理 2.2 模型计算机组成 2.3 模 ...

最新文章

  1. 网络文件系统(NFS)简介
  2. 骗子防不胜防,我们该如何安全上网?
  3. python爬虫学习(一) requests模块
  4. 解决:未能将管道连接到虚拟机: 所有的管道范例都在使用中。
  5. 细胞增殖曲线_两种月龄近交系五指山小型猪脂肪间充质干细胞生物学特性的比较...
  6. 3d激光雷达开发(平面映射)
  7. KNX智能照明系统在福安中医院的应用
  8. visio业务流程图教学_用visio软件怎样画数据流程图和业务流程图?
  9. iTunes降级操作
  10. next主题配置文件配置项介绍
  11. 用Python爬取东方财富网上市公司财务报表
  12. hotmail手机端_如何在安卓手机上设置Hotmail?
  13. linux关闭虚拟网卡,KVM---关闭虚拟网卡virbr0的方法
  14. Python Web项目
  15. Flask项目实战——6—(前台用户模型、前台登录注册、图形验证码、手机短信验证码、添加表单验证短信验证码请求)
  16. uni-app开发经验分享二十二: uni-app大转盘思路解析
  17. python3爬虫系列之使用requests爬取LOL英雄图片
  18. 视频采集卡二次开发(天敏SDK2500+openCV)
  19. 【转】STL之父访谈录
  20. Vegas的MP4渲染格式

热门文章

  1. 如何使用表述性Pipeline
  2. 全国计算机一级准考证号查询
  3. 如何给特殊字符串加索引:如身份证、邮箱等
  4. 合并两个有序链表,合并后依然有序
  5. 组装电脑基础知识之中央处理器CPU
  6. 研一汇报第五周(2019.11.17)
  7. 闪聚支付项目遇到的问题
  8. java多线程读取文件_java多线程读写同一个文件
  9. 你可能不知道的 ZooKeeper 知识点
  10. 社会网络分析python语言实现