999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA的CPU與保密機之間的UART通信設(shè)計

2021-09-13 08:51:38李淼李娟娟
無線互聯(lián)科技 2021年14期

李淼 李娟娟

摘 要:在衛(wèi)星通信系統(tǒng)的信道加密業(yè)務(wù)中,通常使用FPGA的UART通信實現(xiàn)CPU與保密機之間的交互。文章介紹的UART通信模塊,是一種新穎的串口發(fā)送和接收的FPGA設(shè)計,僅由Verilog中簡單的always塊就能實現(xiàn),證明此方法的操作簡單且實用性強。仿真測試驗證收發(fā)模塊可實現(xiàn)可靠的全雙工串口通信,更容易滿足實際設(shè)計的需求。

關(guān)鍵詞:FPGA;UART通信;always塊

0 引言

在衛(wèi)星通信系統(tǒng)的加密業(yè)務(wù)中,CPU通過發(fā)送不同指令控制/查詢保密機的同時,保密機又要向CPU上報狀態(tài),由FPGA實現(xiàn)UART串口功能(Universal Asynchronous Receiver/Transmitter)是它們之間通信的一種常用方式,UART將要傳輸?shù)男畔⒃诖型ㄐ排c并行通信之間加以轉(zhuǎn)換[1-3]。其處理方式是FPGA采用狀態(tài)機設(shè)計,并在每一位數(shù)據(jù)的中點進行數(shù)據(jù)采樣[4-5]。本文設(shè)計的基于FPGA的UART通信模塊,省去了16倍波特率時鐘和復(fù)雜的狀態(tài)機,可實現(xiàn)同樣的串口功能及性能。

FPGA在CPU與保密機之間的串行通信接口電路的設(shè)計采用了自頂而下的設(shè)計方法,主要分為UART發(fā)送模塊、UART接收模塊兩大模塊。

1 UART發(fā)送模塊設(shè)計

當CPU控制/查詢保密機狀態(tài)時,在固定波特率? ? ? ?(38 400 Hz)下,F(xiàn)PGA將CPU發(fā)送的控制信令轉(zhuǎn)化成UART幀數(shù)據(jù)格式串行數(shù)據(jù)流發(fā)送給保密機,UART串口發(fā)送時序如圖1所示。

根據(jù)圖1設(shè)計了串口發(fā)送程序,偽代碼示例如下,其中系統(tǒng)主時鐘為60 MHz,波特率為? ? ? ? ?38 400 Hz,且使能uart_en與數(shù)據(jù)uart_din對齊,并均與主時鐘上升沿對齊。

parameter CLK_FREQ = 60_000_000;//主時鐘parameter UART_BPS = 38400;//波特率

parameter BPS_CNT = CLK_FREQ/UART_BPS;

//找到使能uart_en的上升沿

assign en_flag =( ~ uart_en_d1 ) & uart_en_d0;

uart_en_d0 <= uart_en;

uart_en_d1 <= uart_en_d0;

//通過計數(shù)器控制tx_flag的長度為9.5個波特率周期

if ( en_flag )? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?tx_flag <= 1d1;

else if ( ( tx_cnt == 4d9 ) && ( clk_cnt == BPS_CNT/2 - 1b1 ) )? ?tx_flag <= 1d0;

//一個波特率周期

if ( tx_flag & clk_cnt < BPS_CNT - 1b1 )? ? ? ? ? ? ? ? ? ? ?clk_cnt <= clk_cnt + 1d1;

//串口一次發(fā)送的比特數(shù)

if ( tx_flag & clk_cnt == BPS_CNT - 1b1 )? ? ? ? ? ? ? ? ? ? tx_cnt <= tx_cnt + 1d1;

//輸出串口數(shù)據(jù)及起始位和停止位

if ( tx_flag && ( clk_cnt == 16d0 ) )

case ( tx_cnt )

4d0 : uart_txd <= 1d0;4d1 : uart_txd <= tx_data[0];4d2 : uart_txd <= tx_data[1];

4d3 : uart_txd <= tx_data[2];4d4 : uart_txd <= tx_data[3];4d5 : uart_txd <= tx_data[4];

4d6 : uart_txd <= tx_data[5];4d7 : uart_txd <= tx_data[6];4d8 : uart_txd <= tx_data[7];

4d9 : uart_txd <= 1d1;

根據(jù)接口時序要求:首先,將計數(shù)器clk_cnt對主時鐘計數(shù),并計數(shù)到波特率周期后清零,即在0 ~ BPS_CNT-1范圍內(nèi)循環(huán)計數(shù)。其次,tx_flag作為串口輸出數(shù)據(jù)使能,故在數(shù)據(jù)使能uart_en上升沿置高,然后在滿足條件(tx_cnt == 4d9 & clk_cnt == BPS_CNT/2 - 1b1)時置低,此時正好滿足tx_flag長度為9.5個波特率周期;其中tx_cnt在0~9計數(shù),為保證每次計數(shù)為1bit有效數(shù)據(jù)寬度,tx_cnt僅在(clk_cnt == BPS_CNT - 1b1),即一個波特率周期時累加。最后,在計數(shù)器tx_cnt為0~9時依次輸出起始位(0)、8位數(shù)據(jù)位(從低到高)、停止位(1)。

2 UART接收模塊設(shè)計

當CPU查詢保密機狀態(tài)后,為接收保密機發(fā)送的UART串行數(shù)據(jù),可通過FPGA捕獲保密機發(fā)送UART串行數(shù)據(jù),根據(jù)UART串口接收時序(見圖2),串轉(zhuǎn)并得到的數(shù)據(jù)發(fā)送給CPU。

由圖2可知,在一定波特率下,F(xiàn)PGA根據(jù)UART串口接收時序依次采集起始位、數(shù)據(jù)位、停止位。設(shè)計的串口接收程序偽代碼示例如下:

parameter CLK_FREQ = 60_000_000;//主時鐘parameter UART_BPS = 38400;//波特率

parameter BPS_CNT = CLK_FREQ/UART_BPS;

//找到串口數(shù)據(jù)uart_rxd的下降沿

assign start_flag = uart_rxd_d1 & ( ~uart_rxd_d0 );

uart_rxd_d0 <= uart_rxd;

uart_rxd_d1 <= uart_rxd_d0;

//通過計數(shù)器控制rx_flag的長度為9.5個波特率周期

if ( start_flag )? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? rx_flag <= 1d1;

else if ( ( rx_cnt == 4d9 ) && ( clk_cnt == BPS_CNT/2 - 1b1 ) )? ? rx_flag <= 1d0;

//一個波特率周期

if ( rx_flag &clk_cnt < BPS_CNT - 1b1 )? ? ? ? ? ? ? ? ? ? ? ?clk_cnt <= clk_cnt + 1d1;

////串口一次接收的比特數(shù)

if ( rx_flag & clk_cnt == BPS_CNT - 1b1 )? ? ? ? ? ? ? ? ? ? ? rx_cnt <= rx_cnt + 1d1;

//在中點采集數(shù)據(jù)

if ( rx_flag && ( clk_cnt == BPS_CNT/2 ) )

case ( rx_cnt )

4d1 : rx_data[0] <= uart_rxd_d1;4d2 : rx_data[1] <= uart_rxd_d1;

4d3 : rx_data[2] <= uart_rxd_d1;4d4 : rx_data[3] <= uart_rxd_d1;

4d5 : rx_data[4] <= uart_rxd_d1;4d6 : rx_data[5] <= uart_rxd_d1;

4d7 : rx_data[6] <= uart_rxd_d1;4d8 : rx_data[7] <= uart_rxd_d1;

//輸出串口接收完成標志uart_done

if ( rx_cnt == 4d9 )? ? ? ? ? ? ? ? ? ? ?uart_done <= 1d1;

uart_data <= rx_data;

根據(jù)接口時序要求:首先,通過uart_rx的下降沿start_flag捕獲串口的起始位start bit,并同時將串口接收使能rx_flag置高,經(jīng)過9.5個波特率周期后(rx_cnt == 4d9 & clk_cnt == BPS_CNT/2 - 1b1)置低,其中rx_cnt和clk_cnt兩個計數(shù)器與發(fā)送端保持一致。其次,在rx_cnt為1~8時,同時滿足在一個波特率周期的中點(clk_cnt == BPS_CNT/2)位置時,進行串口數(shù)據(jù)的采樣,采樣順序為從低位到高位。最后,在停止位處(rx_cnt == 4d9),輸出接收數(shù)據(jù)和捕獲使能信號送給CPU。

3 仿真測試

為了驗證2個UART串口測試模塊的準確性,搭建仿真自環(huán)的條件,即將串口接收模塊完成標志uart_done的下降沿作為串口發(fā)送模塊的發(fā)送標志,仿真結(jié)果如圖3所示。模擬發(fā)送3幀數(shù)據(jù)(0x7E,0x33,0x55)由UART發(fā)送模塊接收,并轉(zhuǎn)串后直接給接收模塊,可以看出在串口接收模塊uart_data解碼輸出的3幀數(shù)據(jù)與模擬輸入數(shù)據(jù)一致,說明UART串口收發(fā)模塊通信正確。

4 結(jié)語

本文介紹了一種基于FPGA實現(xiàn)CPU與保密機之間的UART模塊設(shè)計,通過UART接口協(xié)議,分別設(shè)計了FPGA的UART串口發(fā)送時序和UART串口接收時序,采用簡單的always塊就實現(xiàn)了收發(fā)功能。由于采用了一個波特率周期的計數(shù)器,接收模塊可在每個串行數(shù)據(jù)的中點進行采樣,保證了數(shù)據(jù)傳輸?shù)臏蚀_性。最后,通過軟件仿真,進行收發(fā)自環(huán),實現(xiàn)了UART數(shù)據(jù)的收發(fā)功能,這種簡單可靠的設(shè)計對FPGA在uart串口通信的開發(fā)中具有較強的可操作性和應(yīng)用價值。

[參考文獻]

[1]張繼國.一種利用FPGA實現(xiàn)串口通信的設(shè)計[J].電子世界,2020(12):124-125.

[2]朱玉成,董文學(xué).基于FPGA的串口通信電路設(shè)計與實現(xiàn)[J].通訊世界,2018(3):41-42.

[3]王閩.基于FPGA的口通信設(shè)計與實現(xiàn)[J].通訊世界,2017(2):52.

[4]王媛斌.FPGA與PC通信的UART串口設(shè)計[J].蘭州工業(yè)學(xué)院學(xué)報,2020(9):60-65.

[5]陳孟春.基于有限狀態(tài)機的高速串口通信收發(fā)器的FPGA設(shè)計[J].計算機應(yīng)用與軟件,2017(12):178-183.

(編輯 姚 鑫)

主站蜘蛛池模板: 亚洲欧美一区二区三区图片| 日韩性网站| 成人字幕网视频在线观看| 亚洲无码在线午夜电影| 午夜少妇精品视频小电影| 91网红精品在线观看| 国产在线一区视频| 亚洲91精品视频| 无码'专区第一页| 日韩国产精品无码一区二区三区| 91精品小视频| 亚洲国产精品日韩av专区| 天天做天天爱夜夜爽毛片毛片| AV无码国产在线看岛国岛| 欧美第一页在线| 国产毛片网站| AV在线天堂进入| 91精品啪在线观看国产60岁| 国产91无码福利在线| 国产成人免费观看在线视频| 国产jizz| 少妇露出福利视频| 国产乱子伦视频三区| 成人午夜在线播放| 亚洲中文字幕国产av| 日韩欧美中文字幕在线精品| 亚洲69视频| 国产成人禁片在线观看| 黑人巨大精品欧美一区二区区| 国产在线小视频| 中文字幕人妻无码系列第三区| 91麻豆国产精品91久久久| 四虎成人在线视频| 精品午夜国产福利观看| 香蕉蕉亚亚洲aav综合| 亚洲国产成熟视频在线多多| 欧美成人影院亚洲综合图| 真实国产乱子伦视频| 国模视频一区二区| 久久semm亚洲国产| 精品国产Av电影无码久久久| 亚洲成在线观看 | 国产成+人+综合+亚洲欧美 | 国产第三区| 亚洲AV无码久久精品色欲| 91精品国产麻豆国产自产在线 | 国产午夜福利在线小视频| 天堂成人在线视频| 国产成人高精品免费视频| 精品国产三级在线观看| 91精品国产无线乱码在线| 国产亚洲美日韩AV中文字幕无码成人| 国产一级毛片在线| 亚洲精品日产精品乱码不卡| 欧美日韩导航| 免费三A级毛片视频| 91九色国产在线| 欧美精品v| 91九色最新地址| 麻豆精品视频在线原创| AV色爱天堂网| 欧美啪啪精品| 毛片网站在线播放| 国产精品主播| 永久毛片在线播| 最新亚洲人成无码网站欣赏网| 丰满人妻被猛烈进入无码| 久久久久免费看成人影片| 国产原创演绎剧情有字幕的| aⅴ免费在线观看| 日韩欧美视频第一区在线观看 | 国产女人爽到高潮的免费视频| 久久人搡人人玩人妻精品| 日韩欧美高清视频| 亚洲AV成人一区二区三区AV| 99久久精品免费视频| 国产在线麻豆波多野结衣 | 国产精品对白刺激| 18禁高潮出水呻吟娇喘蜜芽| 青青青草国产| 亚洲六月丁香六月婷婷蜜芽| 在线观看视频一区二区|