Verilog数字系统基础设计-数据转换器
緒論
在一些應用中,兩個電路模塊交界處,一個電路模塊的輸出數據位寬大于另一個模塊的輸入數據位寬,此時需要進行數據轉換。例如,在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 endmoduleNOW現在行動!
學習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数字系统基础设计-数据转换器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 屏幕标记软件-Pointofix介绍
- 下一篇: java ssm自行车在线租赁系统ide