Verilog数字系统基础设计-数据转换器
緒論
在一些應(yīng)用中,兩個(gè)電路模塊交界處,一個(gè)電路模塊的輸出數(shù)據(jù)位寬大于另一個(gè)模塊的輸入數(shù)據(jù)位寬,此時(shí)需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換。例如,在SATA控制器中,內(nèi)部數(shù)據(jù)位寬為32比特,但是與外部物理收發(fā)器PHY的接口通常為16比特或8比特。同樣的,從PHY接收到的數(shù)據(jù)也是16比特或8比特,數(shù)據(jù)交給控制器后,在其內(nèi)部使用之前轉(zhuǎn)換為32比特。下面將介紹進(jìn)行數(shù)據(jù)寬度轉(zhuǎn)換的電路,電路中沒有使用FIFO,是通過時(shí)鐘分頻與倍頻實(shí)現(xiàn)數(shù)據(jù)位寬轉(zhuǎn)換和傳輸?shù)摹?/p>
由寬到窄數(shù)據(jù)轉(zhuǎn)換
圖6.30是位寬由寬變窄時(shí)的示意圖。6.31是數(shù)據(jù)轉(zhuǎn)換波形示意圖。
電路模塊B的工作時(shí)鐘為clk2x,在電路模塊A中將其二分頻得到clklX。clk1x與clk2x之間有一個(gè)同定的相位 差。根據(jù)圖6.30和圖6.31,具體的數(shù)據(jù)傳輸過程如下:
-
clklx下方的數(shù)據(jù)datain[31:0]經(jīng)過clk2x采樣產(chǎn)生datain_sync[31:0],由于clk1x在相位上滯后于clk2x且二者為同步時(shí)鐘,因此數(shù)據(jù)從時(shí)鐘域clklx傳遞到時(shí)鐘域clk2x時(shí)不會(huì)存在問題;
-
在clk2x時(shí)鐘域內(nèi),當(dāng)clklx為0時(shí),使用clk2x選擇datain_sync的低16比特,當(dāng)clklx為1時(shí),選擇datain_sync的高16比特;
-
完成數(shù)據(jù)變換,最終輸出dataout_clk2x[15:0]。
代碼及仿真結(jié)果如下。
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由窄到寬數(shù)據(jù)轉(zhuǎn)換
圖6.32和圖6.33是實(shí)現(xiàn)由窄到寬數(shù)據(jù)轉(zhuǎn)換操作的電路和工作波形。
代碼及仿真結(jié)果如下。
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 endmoduleNOW現(xiàn)在行動(dòng)!
學(xué)習(xí)Xilinx FPGA最好的資料其實(shí)就是官方手冊(cè),下表總結(jié)了部分手冊(cè)的主要介紹內(nèi)容,關(guān)注我,持續(xù)更新中......
| 文件名 | 主標(biāo)題 | 內(nèi)容簡(jiǎn)單介紹 | 是否有中文版 | |
| UG476 | 7 Series FPGAs GTX/GTH ?Transceivers | GTX和GTH介紹,PCIe、serdes等學(xué)習(xí)必備 | 否 | |
| UG471 | 7 Series FPGAs SelectIO Resources | 描述 7 系列 FPGA 中可用的 SelectIO資源。 | 否 | |
| UG1114 | PetaLinux Tools Documentaton | PetaLinux 工具文檔 參考指南 | 是,V2019.2 | |
| UG949 | UltraFAST 設(shè)計(jì)方法指南(適用于 Vivado ?Design Suite) | 賽靈思? UltraFast? ?設(shè)計(jì)方法是用于為當(dāng)今器件優(yōu)化設(shè)計(jì)進(jìn)程的一套最佳實(shí)踐。這些設(shè)計(jì)的規(guī)模與復(fù)雜性需要執(zhí)行特定的步驟與設(shè)計(jì)任務(wù),從而確保設(shè)計(jì)每一個(gè)階段的成功開展。依照這些步驟,并遵循最佳實(shí)踐,將幫助您以最快的速度和最高的效率實(shí)現(xiàn)期望的設(shè)計(jì)目標(biāo) | 是,V2018.1 | |
| IP手冊(cè) | pg057 | FIFO Generator | FIFO生成器IP使用手冊(cè) | 否 |
| pg104 | Complex Multiplier | 復(fù)數(shù)乘法器IP使用手冊(cè) | 否 | |
| pg122 | RAM-Based Shift Register? | 移位寄存器IP使用手冊(cè) | 否 |
推薦閱讀
【Vivado那些事】如何查找官網(wǎng)例程及如何使用官網(wǎng)例程
【Vivado使用誤區(qū)與進(jìn)階】總結(jié)篇
【Vivado那些事】Vivado中常用的快捷鍵(二)其他常用快捷鍵
SystemVerilog數(shù)字系統(tǒng)設(shè)計(jì)_夏宇聞 PDF
圖書推薦|ARM Cortex-M0 全可編程SoC原理及實(shí)現(xiàn)
簡(jiǎn)談:如何學(xué)習(xí)FPGA
1202年了,還在使用虛擬機(jī)嗎?Win10安裝Ubuntu子系統(tǒng)及圖形化界面詳細(xì)教程
Github 上有哪些優(yōu)秀的 VHDL/Verilog/FPGA 項(xiàng)目
AD936x+ZYNQ搭建收音機(jī)(一)
AD936x+ZYNQ搭建OpenWIFI
無招勝有招-Vivado非工程模式下的詳細(xì)設(shè)計(jì)
面試中經(jīng)常會(huì)遇到的FPGA基本概念,你會(huì)幾個(gè)?
Xilinx FPGA MIPI 接口簡(jiǎn)單說明
Vivado ML(機(jī)器學(xué)習(xí)) 2021嘗鮮
推薦一些可以獲取免費(fèi)的國(guó)外的原版書籍(電子版)網(wǎng)站
【Vivado那些事】FPGA的配置方式
FPGA 的重構(gòu)
淺析FPGA局部動(dòng)態(tài)可重構(gòu)技術(shù)
ISP(圖像信號(hào)處理)算法概述、工作原理、架構(gòu)、處理流程
國(guó)產(chǎn)CPU概括
從電子游戲歷史看IC發(fā)展的助推劑
80年代電子游戲及電腦游戲的發(fā)展歷史
PCIe總線的基礎(chǔ)知識(shí)
萬字長(zhǎng)文帶你回顧電子游戲的七十多年歷史(完整版)
FPGA中異步復(fù)位,同步釋放的理解
OpenFPGA系列文章總結(jié)
用Verilog設(shè)計(jì)一個(gè)16 位 RISC 處理器
介紹一些新手入門FPGA的優(yōu)秀網(wǎng)站(新增)
Verilog數(shù)字系統(tǒng)基礎(chǔ)設(shè)計(jì)-CRC
FPGA 的布局規(guī)劃藝術(shù)
Verilog數(shù)字系統(tǒng)基礎(chǔ)設(shè)計(jì)-奇偶校驗(yàn)
建立和保持時(shí)間及時(shí)序簡(jiǎn)單理解
(Xilinx)FPGA中LVDS差分高速傳輸?shù)膶?shí)現(xiàn)
Xilinx Multiboot實(shí)例演示
高速串行通信常用的編碼方式-8b/10b編碼/解碼
Verilog計(jì)時(shí)(微秒、毫秒和秒)脈沖的產(chǎn)生及同步整形電路
再說System Verilog 與 Verilog 的關(guān)系
圖書推薦|一本圖像/視頻處理的強(qiáng)大工具書
Verilog HDL-同步技術(shù)
再說System Verilog 與 Verilog 的關(guān)系
數(shù)模混合信號(hào)建模語(yǔ)言Verilog-AMS
數(shù)字系統(tǒng)重要指標(biāo)-吞吐率和時(shí)延
總結(jié)
以上是生活随笔為你收集整理的Verilog数字系统基础设计-数据转换器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 屏幕标记软件-Pointofix介绍
- 下一篇: java ssm自行车在线租赁系统ide