基于FPGA的基帶64×64 數據分配矩陣設計方案
本文采用FPGA作為實(shí)現控制邏輯的核心部件,提出了基于FPGA的基帶64×64 數據分配矩陣設計方案,并介紹了上位機的軟件設計思路和FPGA的內部編程實(shí)現及仿真。經(jīng)驗證該方案具有規模大、成本低、高速等特點(diǎn),可廣泛應用于大規?;鶐底窒到y測試及信號程控分配調度中。
本文引用地址:http://dyxdggzs.com/article/201809/388651.htm0 引言
數據分配矩陣即矩陣開(kāi)關(guān),顧名思義,指結構為行列交叉排布的開(kāi)關(guān)產(chǎn)品,其特點(diǎn)為每個(gè)節點(diǎn)連接一個(gè)行/列,每個(gè)節點(diǎn)可以單獨操作,通過(guò)設置節點(diǎn)的不同組合可以實(shí)現信號的路由。矩陣開(kāi)關(guān)的主要優(yōu)勢在于其簡(jiǎn)化的部線(xiàn),整個(gè)測試系統可輕松地動(dòng)態(tài)改變其內部連接路徑而無(wú)須外部手動(dòng)干預。矩陣開(kāi)關(guān)的使用非常靈活方便,是目前程控開(kāi)關(guān)產(chǎn)品中品種最多的產(chǎn)品,在汽車(chē)電子、半導體測試、航空航天等領(lǐng)域得到了廣泛的應用。
FPGA具有運行速度快,內部邏輯資源豐富,外圍I/O口數量多等優(yōu)點(diǎn),因此本設計選用FPGA作為核心器件。
1 系統結構及功能
本設計是為了實(shí)現64位輸入信號到64位輸出的任意無(wú)交叉的切換,即輸入與輸出是一一對應的。由于本設計是針對基帶數字信號,而設計中選用的晶振頻率為25 MHz,因此根本不用考慮FPGA處理異步時(shí)鐘域數據傳輸的問(wèn)題,只需直接將對應的輸入信號經(jīng)電平轉換后,經(jīng)譯碼后直接輸出到相應的某路輸出接口即可。
上位機ARM 通過(guò)串口向FPGA 發(fā)送接口的連接信息,FPGA根據接收到的數據進(jìn)行譯碼,將對應的輸入與對應的輸出連接起來(lái),實(shí)現規定鏈路的連接??紤]到所含資源以及管腳數量,本設計方案選用Altera公司Cyclone Ⅲ系列EP3C25F256型FPGA.選用了4塊32路的電平轉換芯片實(shí)現5 V 信號向FPGA 能夠識別的TTL 信號的轉換。
其結構框圖如圖1所示。

2 上位機設計
上位機的界面如圖2 所示。在相應的輸入通道文本框里輸入0~64,點(diǎn)擊“確定”按鈕后,首先對文本框里所有的數據進(jìn)行比較判斷,如出現重復則進(jìn)行報錯,提示重新輸入。無(wú)誤后,通過(guò)串口按輸出接口順序依次向FPGA發(fā)送64條接口的連接指令。每一條指令包含3 B,第一個(gè)字節為信息頭“AA”,若FPGA接收到的某條指令的頭字節不是“AA”,則無(wú)返回信息,上位機將重新發(fā)送這條指令直到正確為止。第二個(gè)字節為輸入端口字節,即對應文本框中的數字,如沒(méi)有輸入數字則默認發(fā)送0,所以如需端口某條鏈路斷開(kāi)只要在相應的文本框中輸入0,點(diǎn)擊確定即可。第三個(gè)字節為輸出端口對應的數據,按1到64順序發(fā)送。圖2中的“遠控”按鈕為預留的用作計算機遠控使用。

3 下位機設計
3.1 串口通信協(xié)議
串行通信是一種可以將接收到的并行數據字符轉換為連續的串行數據流發(fā)送出去,同時(shí)可將接收的串行數據流轉換為并行的數據字符發(fā)送出去的通信協(xié)議。
其數據幀主要包括1位起始位,8位數據位,1位奇偶校驗位,1/2位停止位。
3.2 FPGA內部編程
FPGA模塊的主要功能是實(shí)現串口收發(fā)和譯碼,相應地在用Verilog HDL實(shí)現時(shí)也分為串口收發(fā)和譯碼2個(gè)電路模塊,經(jīng)綜合后其RTL級視圖如圖3所示。開(kāi)發(fā)工具采用Altera公司推出的集成EDA 開(kāi)發(fā)工具Quartus Ⅱ,可以完成Altera公司所有的FPGA /CPLD產(chǎn)品開(kāi)發(fā)的設計輸入、綜合、實(shí)現等環(huán)節。

3.2.1 串口收發(fā)模塊設計
串口收發(fā)模塊就是圖3中的uart_top模塊,主要負責串行數據的接收與發(fā)送,并將接收到的數據送入下一級。
該模塊的功能已通過(guò)串口調試工具調試成功。該模塊由4個(gè)子模塊構成,分別為控制接收波特率的speed_rx模塊、控制發(fā)送波特率的speed_tx 模塊、數據接收模塊my_uart_rx、數據發(fā)送模塊my_uart_tx.
接收、發(fā)送波特率的控制可以引用同一模塊的發(fā)送來(lái)實(shí)現。其模塊化框圖如圖4所示,當檢測到輸入信號bps_start出現一個(gè)上升沿后,則該模塊通過(guò)計數來(lái)實(shí)現分頻,例如時(shí)鐘頻率為25 MHz,波特率為9 600,則計數周期的25 000 000/9 600≈2 604,該模塊部分代碼如下:

數據接收模塊的模塊化框圖如圖5所示,它是通過(guò)移位運算來(lái)接收串行數據,如檢測到rs232_rx由高電平變?yōu)榈碗娖絼t開(kāi)始移位接收數據,每次接收3 B 的數據,將第二、第三個(gè)字節輸入下一級,若檢測到第一個(gè)字節為10101010(即16進(jìn)制的AA),標志信號flag就將維持一個(gè)周期的高電平輸出,否則flag一直維持高電平,那么后級將無(wú)法鎖存第二、第三字節。部分代碼如下:

數據發(fā)送模塊是用來(lái)返回接收數據讓上位機進(jìn)行糾錯的,其模塊化框圖如圖6所示。如檢測到flag變?yōu)楦唠娖綍r(shí),鎖存輸入的兩個(gè)字節返回給上位機,部分代碼如下:

3.2.2 譯碼模塊設計
譯碼模塊的模塊化框圖如圖7所示,其功能是對上位機發(fā)送的輸入輸出端口編號進(jìn)行譯碼,使相應的輸入端口和輸出端口連通,如檢測到flag 有效的情況下,rx_data_in為2,rx_data_out為3,則該模塊會(huì )將din[2]通道的輸入信號經(jīng)dout[3]輸出通道輸出。部分代碼如下[10]:

3.2.3 譯碼模塊仿真
由于64×64的仿真很繁瑣且不易操作,所以對4×4的譯碼模塊進(jìn)行仿真,仿真結果如圖8所示,輸出1與輸入3相連,輸出2與輸入4相連,輸出3懸空,輸出4與輸入2相連。

4 結語(yǔ)
本文采用FPGA作為實(shí)現控制邏輯的核心部件,提出了基于FPGA的基帶64×64 數據分配矩陣設計方案,并介紹了上位機的軟件設計思路和FPGA的內部編程實(shí)現及仿真。經(jīng)驗證本系統基本能實(shí)現基帶數字信號的分配路由,從而證實(shí)了該方案具有規模大、成本低、高速等特點(diǎn),可廣泛應用于大規?;鶐底窒到y測試及信號程控分配調度中。
評論