亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于龍芯Local IO 接口的UART IP 核設計

        2022-03-27 11:02:14李森李中袁強唐建
        智能物聯(lián)技術 2022年5期
        關鍵詞:設計

        李森,李中,袁強,唐建

        (中國兵器裝備集團自動化研究所有限公司 特種計算機事業(yè)部,四川 綿陽 621000)

        0 引言

        隨著國產處理器在各種電子設備中的應用越來越廣泛,以國產CPU 龍芯系列為主的各種計算機不斷得到普及,但龍芯系列芯片自帶的UART 接口有限,在計算機硬件系統(tǒng)的設計中常常需要使用FPGA(Field Programmable Gate Array)或CPLD(Complex Programmable Logic Device)擴展多路串口[1],以滿足設計需要。但Xilinx 官方[2]的UART IP核為AXI(Advanced eXtensible Interface)總線接口,操作比較繁瑣,不能直接與Local IO 接口適配。為了解決與龍芯Local IO 接口適配以及UART 接口參數(shù)可在線配置的問題,本文設計了一種基于Local IO 接口的UART IP核,能夠實現(xiàn)串口協(xié)議參數(shù)、中斷系統(tǒng)參數(shù)在線配置功能,解決了龍芯系列CPU 在系統(tǒng)設計中的串口擴增問題,增強了龍芯CPU 的兼容性。

        1 IP 核整體設計

        UART IP 核由發(fā)送模塊(UART_TX)、接收模塊(UART_RX)、發(fā)送FIFO(TX_FIFO)、接收FIFO(RX_FIFO)、時鐘模塊(UART_CLK)、中斷系統(tǒng)(UART_INTR_CTRL)、配置模塊(UART_CONFIG)、Local IO 模塊8 部分組成[3],如圖1 所示。

        圖1 UART IP 整體結構Figure 1 Overall structure of UART IP

        2 IP 核設計實現(xiàn)

        2.1 發(fā)送模塊UART_TX 設計

        UART IP 核的發(fā)送模塊主要實現(xiàn)將待發(fā)送的并行數(shù)據(jù)按照串口協(xié)議轉化為串行數(shù)據(jù),并將串行數(shù)據(jù)發(fā)送到總線上,該發(fā)送模塊具有數(shù)據(jù)位長度、奇偶校驗、停止位長度可配置的功能。其關鍵端口的具體設計如下:

        (1)data_length [1:0]:數(shù)據(jù)位長度配置,2’b00(5bit)、2’b01(6bit)、2’b10(7bit)、2’b11(8bit),數(shù)據(jù)位長度默認為8bit。

        (2)parity_set[1:0]:校驗位設置,2’b11(奇校驗)、2’b10(偶校驗)、2’b00(無校驗),默認為無校驗。

        (3)stop_length [1:0]:停止位長度設置,2’b11(2bit)、2’b10(1.5bit)、2’b00(1bit),默認停止位長度為1bit。

        (4)data_in[7:0]:8bit 并行數(shù)據(jù)輸入。

        (5)tx_out:串口發(fā)送器,串行數(shù)據(jù)輸出。

        按照以上設計思路,對UART 發(fā)送模塊設計實現(xiàn),并進行仿真驗證。如圖2 所示為data_length=2’b11、parity_set=2’b10、stop_length=2’b00、data_in=8’b10110011 以及data_length=2’b10、parity_set=2’b11、stop_length=2’b00、data_in=8’b1001010的仿真結果。由仿真結果可知,設計正確。

        圖2 UART_TX 仿真結果Figure 2 UART_ TX simulation results

        2.2 接收模塊UART_RX 設計

        UART IP 核的接收模塊主要實現(xiàn)將串行數(shù)據(jù)按照串口協(xié)議與預設的波特率轉化為并行數(shù)據(jù)輸出[4]。當檢測到總線上有起始位產生時,按照設定的波特率與配置模式,對總線數(shù)據(jù)進行采樣。由于串口總線在空閑時保持為高,而停止位也為高電平,因此在設計接收模塊的狀態(tài)機中,當接收完數(shù)據(jù)位與校驗位后就直接跳轉到空閑態(tài),等待下一幀串口數(shù)據(jù)的起始位。其關鍵端口的具體設計如下:

        (1)data_length [1:0]:數(shù)據(jù)位長度配置,2’b00(5bit)、2’b01(6bit)、2’b10(7bit)、2’b11(8bit),數(shù)據(jù)位長度默認為8bit。

        (2)parity_set[1:0]:校驗位設置,2’b11(奇校驗)、2’b10(偶校驗)、2’b00(無校驗),默認為無校驗。

        (3)rx_in:串口接收模塊,串行數(shù)據(jù)輸入端口。

        (4)data_out[7:0]:串口接收器并行數(shù)據(jù)輸出。

        (5)parity_error:校驗錯誤為1,校驗正確為0。

        按照以上設計思路,對UART 接收模塊設計實現(xiàn),并進行仿真驗證。如圖3 所示為data_length=2’b11、parity_set=2’b10 以 及data_length=2’b10、parity_set=2’b10 的仿真結果。其中send_data為發(fā)送的測試數(shù)據(jù),data_out 為接收到的數(shù)據(jù),parity_error 為接收的校驗脈沖,parity_error=1’b0 表示校驗正確,parity_error=1’b1 表示校驗錯誤。由仿真結果可知,設計正確。

        圖3 UART_RX 模塊仿真結果Figure 3 UART_ RX module simulation results

        2.3 時鐘模塊UART_CLK 設計

        為了增強IP 核擴展的靈活性,在設計時采用模塊化設計的思想,將發(fā)送器與接收器使用的波特率時鐘設計為一個獨立的模塊,以便對時鐘模塊進行修改時不會影響系統(tǒng)中其他模塊的功能[5]。時鐘模塊實現(xiàn)在UART_TX 發(fā)送數(shù)據(jù)時,使輸出數(shù)據(jù)按照設定的波特率輸出,發(fā)送時鐘設計為占空比為50%的時鐘信號;在UART_RX 接收數(shù)據(jù)時,在接收時鐘的控制下對總線上的數(shù)據(jù)進行采樣,接收時鐘設計為每個波特率時鐘周期產生一個系統(tǒng)時鐘周期高脈沖的時鐘。UART_CLK 模塊的關鍵端口設計如下:

        (1)baud_set[15:0]:波特率設置的數(shù)據(jù)輸入端口,用于設置發(fā)送時鐘與接收時鐘的波特率大小。baud_set 的計算公式為:baud_set=0.5 fclk/Baud,其中fclk 為FPGA 的系統(tǒng)時鐘,單位為Hz;Baud 為串口的波特率,單位為bps。

        (2)rx_in_reg:串口接收端口下降沿檢測輸入端口。串口處于空閑時,當檢測到該接口為1時,就立刻產生接收時鐘,從uart_rx_clk 端口輸出。

        (3)receive_done:串口每一幀數(shù)據(jù)接收完畢的脈沖信號輸入。當檢測到該信號為1時,就結束uart_rx_clk 時鐘的輸出。

        (4)uart_tx_clk:串口發(fā)送時鐘的輸出端口。

        (5)uart_rx_clk:串口接收時鐘的輸出端口。

        按照以上設計思路,對UART_CLK 模塊設計實現(xiàn),并進行仿真驗證,如圖4 所示為baud_set=5時的仿真結果。由仿真結果可知,發(fā)送時鐘uart_tx_clk 持續(xù)輸出;當rx_in_reg=1時,啟動接收時鐘uart_rx_clk 的輸出,當receive_done=1時,關閉接收時鐘的輸出。

        圖4 UART_CLk 模塊仿真結果Figure 4 UART_ CLk module simulation results

        2.4 FIFO 設計

        為了解決在發(fā)送的過程中CPU 輸出數(shù)據(jù)的速度與UART 傳送數(shù)據(jù)的速度不匹配的問題,需要設計發(fā)送FIFO(TX_FIFO)。在發(fā)送的過程中,CPU 只需通過LocalIO 總線向TX_FIFO 中寫入數(shù)據(jù),當TX_FIFO 不為空時,TX_FIFO 中的數(shù)據(jù)就會被UART_TX 模塊自動發(fā)送出去,直到TX_FIFO 空為止。在接收數(shù)據(jù)的過程中,如果沒有接收FIFO,則串口每接收完一個數(shù)據(jù)后,F(xiàn)PGA 就會產生一次接收中斷輸出,如果進行大量數(shù)據(jù)的持續(xù)傳輸,則會導致CPU 一直進入中斷,造成CPU 死機。為了避免在數(shù)據(jù)接收過程中的頻繁中斷問題,需要在接收側設計接收FIFO(RX_FIFO)。在該UART IP 核中,TX_FIFO 與RX_FIFO 的容量設計為256Byte,F(xiàn)IFO使用Xilinx 自帶的IP 核實現(xiàn)。TX_FIFO 自動發(fā)送與RX_FIFO 自動接收的狀態(tài)機設計,如圖5 所示。

        圖5 FIFO 讀寫控制狀態(tài)機a)TX_FIFO 自動發(fā)送狀態(tài)機;b)RX_FIFO 自動接收狀態(tài)機Figure 5 FIFO read and write control state machine a)TX_FIFO automatic receiving state machine b)RX_FIFO automatic transmission machine

        2.5 中斷系統(tǒng)設計

        一個系統(tǒng)是否具有中斷功能,決定了該系統(tǒng)對外部資源的消耗情況以及該系統(tǒng)的兼容性。如果一個系統(tǒng)沒有中斷功能,則需要消耗大量的CPU 資源去查詢該系統(tǒng)的當前狀態(tài),同時也會降低該系統(tǒng)的對外兼容性。為了降低UART IP 核對CPU 資源的消耗,提高串口通信的實時性,該UART IP 核設計了接收中斷系統(tǒng)[6],該接收中斷具有閾值機制與超時機制。閾值機制的功能是:當接收數(shù)據(jù)的字節(jié)個數(shù)小于設定的閾值時,不產生中斷;當接收數(shù)據(jù)的字節(jié)數(shù)大于設定的閾值后,產生中斷,它可用于基于串口幀的自定義通信協(xié)議中斷適配。超時機制用于在通信的過程中接收數(shù)據(jù)一直無法達到設定閾值進而無法正常產生中斷,導致中斷一直無法輸出的情況。該UART IP 核的中斷系統(tǒng)由中斷寄存器與中斷控制邏輯兩部分組成。中斷寄存器包括中斷使能寄存器、中斷狀態(tài)寄存器、閾值配置寄存器、超時配置寄存器。中斷控制的處理邏輯如圖6 所示。該中斷采用電平的方式輸出,并且具有自動清除中斷的功能。當UART IP 核的接收中斷產生時,中斷輸出引腳置為高電平,當CPU 讀取RX_FIFO 中的數(shù)據(jù)后中斷輸出自動清除,同時中斷狀態(tài)寄存器的相應標志位自動清零,不需要CPU 手動清除中斷標志。

        圖6 中斷生成控制流程Figure 6 Control flow of interrupt generation

        2.6 配置模塊設計

        為了使FPGA 運行過程中CPU 能夠在線對UART IP 核的參數(shù)進行配置[7],設計了獨立的配置模塊(UART_ CONFIG 模塊),用于保存UART IP核的各種配置參數(shù)。配置模塊由各種配置寄存器構成,CPU 通過Local IO 接口可以對這些寄存器進行讀寫操作。配置參數(shù)主要包括UART 協(xié)議基本配置參數(shù)、中斷配置參數(shù)等[8]。配置模塊的寄存器詳細設計如表1 所示。

        表1 寄存器名稱、含義及訪問地址Table 1 Register name,meaning and access address

        2.7 Local IO 接口模塊設計

        Local IO 處理模塊用于實現(xiàn)UART IP 核與龍芯CPU Local IO 接口的適配。龍芯Local IO 接口的讀時序如圖7 所示,寫時序如圖8 所示。按照Local IO 的驅動時序,編寫Local IO 的驅動,并對讀寫驅動進行仿真,其結果分別如圖9 和圖10 所示,由仿真結果可知讀寫驅動時序正確。

        圖7 Local IO 讀時序Figure 7 Local IO read timing

        圖8 Local IO 寫時序Figure 8 Local IO write timing

        圖9 Local IO 讀數(shù)據(jù)仿真結果Figure 9 Local IO read data simulation results

        圖10 Local IO 寫數(shù)據(jù)仿真結果Figure 10 Local IO write data simulation results

        3 方案測試

        為了驗證UART IP 核設計的正確性,將程序下載到FPGA中[9-10]。首先測試UART IP 核的接收功能,利用串口調試助手向FPGA 的一號通道發(fā)送數(shù)據(jù),F(xiàn)PGA 收到數(shù)據(jù)后產生中斷,并通過Local IO接口將數(shù)據(jù)發(fā)送給龍芯CPU,龍芯CPU 讀取數(shù)據(jù)并打印出讀取的結果,隨機抽取兩組測試結果如圖11 所示,每組結果中上方為串口調試助手發(fā)送的數(shù)據(jù),下方為CPU 接收的數(shù)據(jù)。由結果可知,功能正確。接著測試UART IP 核的發(fā)送功能,龍芯CPU通過Local IO 接口向FPGA 的1 號通道發(fā)送數(shù)據(jù),F(xiàn)PGA 收到數(shù)據(jù)后將數(shù)據(jù)發(fā)送給串口調試助手,隨機抽取4 組數(shù)據(jù),其結果如圖12 所示。圖12 中上方為CPU 發(fā)送的數(shù)據(jù),下方為串口調試助手接收的數(shù)據(jù)。由圖12 可知,發(fā)送與接收的數(shù)據(jù)一致,表明設計正確。

        圖11 串口數(shù)據(jù)接收測試結果a)測試結果1 b)測試結果2Figure 11 Serial port data receiving test result a)test result 1 b)test result 2

        圖12 串口數(shù)據(jù)發(fā)送測試結果Figure 12 Serial port data transmission test results

        4 結語

        本文根據(jù)龍芯CPU Local IO 接口的特點,設計了適配Local IO 接口的UART IP核,解決了龍芯CPU 通過FPGA 擴展UART 接口的需求。在設計時采用模塊化設計的思想,增強了IP 核的可裁剪性。在設計中斷系統(tǒng)時引入接收閾值機制與接收超時機制,避免頻繁產生中斷的現(xiàn)象發(fā)生,提高了IP 核與CPU 的兼容性,增強了龍芯CPU 在設計中的普適性。該IP 核在Vivado 中綜合實現(xiàn)后,消耗的資源情況為:LUT 1212個,LUTRAM 26個,F(xiàn)F 1822個,BRAM 1 個。

        猜你喜歡
        設計
        二十四節(jié)氣在平面廣告設計中的應用
        河北畫報(2020年8期)2020-10-27 02:54:06
        何為設計的守護之道?
        《豐收的喜悅展示設計》
        流行色(2020年1期)2020-04-28 11:16:38
        基于PWM的伺服控制系統(tǒng)設計
        電子制作(2019年19期)2019-11-23 08:41:36
        基于89C52的32只三色LED搖搖棒設計
        電子制作(2019年15期)2019-08-27 01:11:50
        基于ICL8038的波形發(fā)生器仿真設計
        電子制作(2019年7期)2019-04-25 13:18:16
        瞞天過海——仿生設計萌到家
        藝術啟蒙(2018年7期)2018-08-23 09:14:18
        設計秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        有種設計叫而專
        Coco薇(2017年5期)2017-06-05 08:53:16
        從平面設計到“設計健康”
        商周刊(2017年26期)2017-04-25 08:13:04
        亚洲中文高清乱码av中文| 国产乱妇乱子视频在播放| 国产精品毛片无遮挡高清| 亚洲成熟丰满熟妇高潮XXXXX| 国产精女同一区二区三区久| 久久精品国产99久久久| 九九精品国产亚洲av日韩| 日韩中文无线码在线视频观看| 国产免费激情小视频在线观看| 水蜜桃男女视频在线观看网站| 无码中文字幕日韩专区| 亚洲日韩中文字幕一区| 久久久久久亚洲AV成人无码国产| 日本不卡一区二区三区在线| 一区二区三区人妻av| 岳毛多又紧做起爽| 国产高清视频91| 亚洲av网站首页在线观看| 亚洲国产中文字幕在线视频综合| 狠狠噜天天噜日日噜无码| 国产成人午夜精品免费视频| 国产人妖一区二区在线| 国产av剧情久久精品久久| 国产成人精品999视频| 国产内射性高湖| 亚洲AV日韩Av无码久久| 少妇被躁到高潮和人狍大战| 欧美奶涨边摸边做爰视频| 97久久香蕉国产线看观看| 偷拍网日本一区二区三区| 午夜视频一区二区在线观看| 人妻少妇精品久久久久久| 国产第一页屁屁影院| 国产 在线播放无码不卡| 亚洲成人精品久久久国产精品| 妺妺窝人体色www看美女| 在线综合网| 玩弄丝袜美腿超短裙校花| 红桃av一区二区三区在线无码av| 无码粉嫩虎白一线天在线观看| 无码高清视频在线播放十区|