国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ZYNQ7000 Linux的數(shù)據(jù)發(fā)射系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)

2023-06-25 05:23馮祥虎肖世偉楊美娜杜軍
現(xiàn)代信息科技 2023年4期
關(guān)鍵詞:驅(qū)動(dòng)程序總線波形

馮祥虎 肖世偉 楊美娜 杜軍

摘? 要:針對(duì)傳統(tǒng)平臺(tái)傳輸信號(hào)頻率固定、開發(fā)過程復(fù)雜的情況,對(duì)信號(hào)發(fā)射系統(tǒng)進(jìn)行了相關(guān)研究,設(shè)計(jì)一款基于ZYNQ-7000和AD(AD9767)架構(gòu)的嵌入式信號(hào)發(fā)射系統(tǒng)。該系統(tǒng)以ZYNQ-7000為數(shù)字信號(hào)發(fā)射平臺(tái),搭配AD轉(zhuǎn)換芯片,在Linux操作系統(tǒng)下通過AXI-DMA的方式實(shí)現(xiàn)信號(hào)的自定義發(fā)射。系統(tǒng)數(shù)據(jù)傳輸速率快,發(fā)射信號(hào)頻率可靈活自定義,開發(fā)前景良好,且具有集成度高、小型化的特點(diǎn),為后續(xù)更多的功能開發(fā)提供了無限的可能。

關(guān)鍵詞:ZYNQ-7000;Linux操作系統(tǒng);AD轉(zhuǎn)換;AXI DMA傳輸

中圖分類號(hào):TN919.5? 文獻(xiàn)標(biāo)識(shí)碼:A? 文章編號(hào):2096-4706(2023)04-0072-03

Design and Implementation of Data Transmission System Based on ZYNQ7000 Linux

FENG Xianghu, XIAO Shiwei, YANG Meina, DU Jun

(School of Computer Science and Information Engineering, Harbin Normal University, Harbin? 150025, China)

Abstract: Aiming at the conditions of fixed transmission signal frequency and complex development process of traditional platform, the signal transmission system is studied and an embedded signal transmission system based on ZYNQ-7000 and AD (AD9767) architecture is designed. The system uses ZYNQ-7000 as the digital signal transmission platform, with AD conversion chip, and achieves customized signal transmission through AXI-DMA under Linux operating system. The system has fast data transmission rate, flexible customization of transmission signal frequency, good development prospect, high integration and miniaturization, which provides unlimited possibilities for further function development.

Keywords: ZYNQ-7000; Linux operating system; AD conversion; AXI DMA transmission

0? 引? 言

隨著芯片行業(yè)的日漸壯大,芯片資源越來越豐富,能夠搭載各種復(fù)雜的框架,從而能夠靈活便捷地實(shí)現(xiàn)多種功能。軟件無線電技術(shù)是一種基于軟件定義的無線電廣播通信技術(shù),除了最基本的射頻收發(fā)器和放大器、混頻器以外,利用軟件實(shí)現(xiàn)各種功能(如工作頻段、調(diào)制解調(diào)類型、通信協(xié)議等),并使寬帶模數(shù)轉(zhuǎn)換器盡可能靠近天線。不同的功能對(duì)應(yīng)著不同的軟件模塊,使用時(shí)只需調(diào)用相應(yīng)的功能模塊即可。不僅提高了系統(tǒng)的靈活性,還節(jié)約了時(shí)間成本。而Linux操作系統(tǒng)具有超強(qiáng)的靈活性,用戶可以通過剪裁系統(tǒng)滿足不同項(xiàng)目的需求。另外,它的開源性決定了它具有豐富的系統(tǒng)資源,硬件資源能夠得到更加充分的利用。不僅如此,Linux操作系統(tǒng)還可在特定的硬件條件下進(jìn)行安裝,安裝過程靈活便捷[1]。

本文采用Digilent開發(fā)的ZYBO板作為主控板,搭配由AD9767芯片構(gòu)成的AD子板,借鑒軟件無線電的原理,基于Linux操作系統(tǒng)在中頻信號(hào)波段設(shè)計(jì)一款信號(hào)發(fā)射平臺(tái),實(shí)現(xiàn)能夠自定義頻率和波形的中頻發(fā)射信號(hào)的功能,為后續(xù)的進(jìn)一步開發(fā)奠定基礎(chǔ)。

1? 硬件模塊設(shè)計(jì)方案

總體硬件設(shè)計(jì)圖如圖1所示。

1.1? ZYNQ-7000芯片

ZYNQ-7000是Xilinx公司率先推出的可擴(kuò)展處理平臺(tái)Zynq系列,它包含一個(gè)雙核ARM Cortex-A9,而且它將PS與PL端集成在一起,以充分使用它的資源,發(fā)揮其優(yōu)勢(shì)。該芯片的設(shè)計(jì)以ARM處理器(PS端)為核心,以可編程邏輯電路(PL端)作為擴(kuò)展。采用由Digilent開發(fā)的低成本ZYNQ開發(fā)板ZYBO作為核心板卡,該板卡使用的是Xilinx XC7Z010-CLG400芯片,含有兩片512 M的DDR3內(nèi)存(1 066 Mps帶寬),具有外部的EEPROM和micro SD卡槽,還有1G以太網(wǎng)PHY和5個(gè)PMOD接口。ZYBO板卡支持三種默認(rèn)編程模式,分別是JTAG編程模式、QSPI編程模式和SD卡編程模式[2]。

1.2? 數(shù)模轉(zhuǎn)換芯片AD9767

AD9767是一個(gè)雙通道14位的CMOS DAC,芯片內(nèi)含有兩個(gè)高品質(zhì)內(nèi)核,另外還集成一個(gè)基準(zhǔn)電壓源和一些數(shù)字接口電路,采用48引腳小型LQFP封裝。器件提供出色的交流和直流性能,可以實(shí)現(xiàn)高達(dá)125 M的模數(shù)轉(zhuǎn)換率,輸出電壓的范圍為5 V到-5 V[3]。

1.3? AXI4總線介紹

AXI總線用于維系PS與PL之間的通信,大大提高了ZYNQ-7000的性能。AXI是一種面向高性能、高帶寬、低延遲的片內(nèi)總線協(xié)議,該協(xié)議是AMBA 3.0協(xié)議中最重要的部分。無需借助復(fù)雜的橋接,該協(xié)議就可以實(shí)現(xiàn)高頻率的操作。它有三種總線類型,分別是AXI4、AXI4-Lite和AXI-Stream[4],本次用到的總線類型主要是AXI-Stream總線。它的核心思想是流式處理數(shù)據(jù),由于在傳輸過程中沒有地址接口,這樣就不涉及讀寫數(shù)據(jù)的概念,只有簡(jiǎn)單的發(fā)送與接收,能夠?qū)崿F(xiàn)無限制的數(shù)據(jù)突發(fā)傳輸,減少了延時(shí),所以它支持面向高速數(shù)據(jù)流的傳輸。

AXI-Stream只能在PL中實(shí)現(xiàn),不能直接與PS相連,因此必須通過AXI-Lite或AXI4進(jìn)行轉(zhuǎn)換,PL部分也有相應(yīng)的AXI總線接口,這樣就能完成PS到PL的互聯(lián)。AXI-DMA由Xilinx公司提供,為內(nèi)存與AXI4-Stream外設(shè)之間提供高寬帶的直接存儲(chǔ)訪問,scatter/gather功能可將CPU從數(shù)據(jù)搬移任務(wù)中解放出來。

1.4? AXI-DMA介紹

AXI DMA相比于AXI內(nèi)存映射,它提供了更高帶寬的直接內(nèi)存訪問通道[5]。在PL端添加AXI DMA IP核,ZYNQ芯片通過AXI_HP接口進(jìn)行高速的數(shù)據(jù)傳輸,無需CPU接入,提高了數(shù)據(jù)的訪問效率。在簡(jiǎn)單的DMA模式下,當(dāng)需要進(jìn)行數(shù)據(jù)的高速傳輸時(shí),只需配置相應(yīng)的DMA控制寄存器即可完成想要的功能。這種模式下,所占用的FPGA資源較少,節(jié)省了不必要的硬件開銷。當(dāng)外設(shè)發(fā)生請(qǐng)求時(shí),DMA控制器會(huì)向CPU發(fā)出總線請(qǐng)求,CPU響應(yīng)該信號(hào)后,釋放總線控制權(quán),DMA控制器接管,進(jìn)行DMA操作。數(shù)據(jù)傳輸完成后,發(fā)出結(jié)束信號(hào),釋放總線,CPU恢復(fù)對(duì)總線的控制。因此,當(dāng)PL的外設(shè)與存儲(chǔ)器之間需要高速的數(shù)據(jù)傳輸并且數(shù)據(jù)傳輸量偏大時(shí),就可以選擇這種模式。

DMA工作流程圖如圖2所示。

1.5? 硬件工程模塊設(shè)計(jì)

根據(jù)硬件設(shè)計(jì)方案,基于Vivado 2018.3搭建工程。在Vivado工程中主要添加了Zynq-7000的IP核、AXI-DMA IP核和AD9767 IP核。首先配置ZYNQ的PS端時(shí)鐘、復(fù)位、uart端口等,使PS部分能夠搭載Linux操作系統(tǒng)正常工作。在AD9767的自定義IP核中增加一個(gè)深度為1 024的FIFO模塊,用于DMA和ADC的時(shí)鐘對(duì)齊。由于DMA有傳輸中斷的現(xiàn)象,若ADC的發(fā)射速度過快,會(huì)導(dǎo)致ADC無數(shù)據(jù)可發(fā),從而使得ADC輸出不連續(xù)。因此增加一個(gè)FIFO模塊,在DMA傳輸中斷時(shí),ADC能在下一次DMA傳輸之前有剩余的數(shù)據(jù)可供傳輸,保證輸出模擬信號(hào)的連續(xù)性。AXI-DMA IP核負(fù)責(zé)通過AXI接口從主機(jī)的DDR中獲取已經(jīng)定義好的數(shù)字信號(hào),然后將數(shù)據(jù)流搬運(yùn)至AD9767 IP核的FIFO當(dāng)中,這樣AD模塊就能源源不斷地進(jìn)行模數(shù)轉(zhuǎn)換,產(chǎn)生連續(xù)的模擬信號(hào)。其中dac_data[13:0]用于發(fā)送FIFO中存儲(chǔ)的14位數(shù)字信號(hào)。

AD9767 IP核引腳和RTL實(shí)現(xiàn)如圖3、圖4所示。

2? 軟件設(shè)計(jì)方案介紹

2.1? 驅(qū)動(dòng)程序開發(fā)

驅(qū)動(dòng)程序是一種實(shí)現(xiàn)計(jì)算機(jī)與設(shè)備通信的特殊程序,相當(dāng)于硬件的接口,操作系統(tǒng)只有通過這個(gè)接口才能控制硬件設(shè)備的工作。Linux中有三大類驅(qū)動(dòng):字符設(shè)備驅(qū)動(dòng)、塊設(shè)備驅(qū)動(dòng)和網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)[6]。在設(shè)計(jì)AD9767的驅(qū)動(dòng)程序時(shí)主要利用了AXI-DMA的循環(huán)發(fā)送功能,優(yōu)勢(shì)在于它能夠在主程序運(yùn)行的過程中不斷地發(fā)送數(shù)據(jù),并且不會(huì)干擾主程序的運(yùn)行。這就讓我們能夠在主程序中預(yù)留出很大的處理空間去做別的事情,比如同時(shí)驅(qū)動(dòng)別的設(shè)備進(jìn)行信號(hào)接收與處理。

程序流程如圖5所示。

部分代碼如下:

DMA傳輸

調(diào)用dma_sync_single_for_cpu和dma_sync_single_for_device函數(shù)分別對(duì)設(shè)備和CPU緩存進(jìn)行同步

dma_async_issue_pending(axi_adc_dev[minor]->tx_chan);操作硬件發(fā)起具體的DMA請(qǐng)求

writel(1,axi_adc_dev[minor]->adc_virtaddr);//開始傳輸

DMA傳輸結(jié)束

dmaengine_terminate_all(axi_adc_dev[minor]->tx_chan);//停止DMA

2.2? 應(yīng)用程序開發(fā)

應(yīng)用程序是為方便用戶操作而提供的程序,對(duì)應(yīng)驅(qū)動(dòng)程序中的函數(shù)接口,操作硬件完成對(duì)應(yīng)動(dòng)作,實(shí)現(xiàn)對(duì)外部設(shè)備的應(yīng)用。本系統(tǒng)的應(yīng)用程序首先根據(jù)用戶輸入的參數(shù),生成對(duì)應(yīng)信號(hào)頻率和波形的波形表,將數(shù)字信號(hào)波形表寫入ROM中。通過驅(qū)動(dòng)程序提供的ioctl接口函數(shù),配置ADC數(shù)據(jù)的個(gè)數(shù)和長(zhǎng)度,控制DMA進(jìn)行初始化。最后控制DMA將數(shù)字信號(hào)波形表進(jìn)行數(shù)據(jù)循環(huán)發(fā)送,從而實(shí)現(xiàn)模擬信號(hào)的不斷發(fā)射。整體應(yīng)用程序流程圖如圖6所示。

部分代碼如下:

通過set_wave_point(uint freq,char* type)函數(shù)生成數(shù)字波形表

調(diào)用ioctl(*fd, AXI_ADC_SET_SAMPLE_NUM, adc_sample_num)來設(shè)置ADC數(shù)據(jù)大小

調(diào)用ioctl(*fd, AXI_ADC_SET_DMA_LEN_BYTES, dma_len_bytes)來設(shè)置ADC數(shù)據(jù)長(zhǎng)度

調(diào)用ioctl(*fd, AXI_ADC_DMA_INIT)進(jìn)行ADC_DMA初始化

調(diào)用ioctl(*fd, AXI_ADC_DMA_CYCLIC_SEND)開啟DMA循環(huán)發(fā)送

調(diào)用ioctl(fd, AXI_ADC_DMA_CYCLIC_STOP)結(jié)束DMA循環(huán)發(fā)送

2.3? 實(shí)驗(yàn)結(jié)果

啟動(dòng)應(yīng)用程序時(shí),首先輸入三個(gè)參數(shù),分別是ADC開始命令、自定義輸出信號(hào)的頻率和波形,以500 kHz的正弦波為例,應(yīng)輸入“ADCstart 500 sin”,系統(tǒng)將會(huì)輸出500 kHz的正弦波信號(hào)。對(duì)該信號(hào)發(fā)射系統(tǒng)進(jìn)行測(cè)試時(shí),使用Tektronix MDO3104示波器進(jìn)行數(shù)據(jù)采集,與示波器進(jìn)行有線連接,選用五個(gè)頻率點(diǎn)進(jìn)行測(cè)試,實(shí)驗(yàn)結(jié)果如表1所示。

經(jīng)過測(cè)試得知,在一定的頻率范圍內(nèi),信號(hào)輸出的頻率誤差在2%以內(nèi)。結(jié)果證明該系統(tǒng)的設(shè)計(jì)方案合理可行,具有一定的應(yīng)用推廣價(jià)值。

3? 結(jié)? 論

本文設(shè)計(jì)一種加載Linux操作系統(tǒng)的可自定義波形的信號(hào)發(fā)射系統(tǒng),借鑒了軟件無線電的原理,實(shí)現(xiàn)了軟硬件協(xié)同的設(shè)計(jì)理念,完成了整體系統(tǒng)的模塊設(shè)計(jì)和程序控制設(shè)計(jì),實(shí)現(xiàn)了相關(guān)實(shí)驗(yàn)測(cè)試系統(tǒng)的可靠性。實(shí)驗(yàn)結(jié)果表明,帶有AXI_DMA驅(qū)動(dòng)的AD信號(hào)發(fā)射系統(tǒng)能夠較為準(zhǔn)確地發(fā)射不同頻率的模擬信號(hào)。相較于傳統(tǒng)的硬件平臺(tái),該系統(tǒng)對(duì)硬件的操作更加靈活便捷,實(shí)現(xiàn)了借鑒軟件無線電原理的初衷。隨著嵌入式系統(tǒng)功能的愈發(fā)復(fù)雜,加載Linux操作系統(tǒng)的ARM開發(fā)板可提供更多的系統(tǒng)資源和網(wǎng)絡(luò)資源,為后續(xù)的應(yīng)用開發(fā)提供更加廣闊的空間。

參考文獻(xiàn):

[1] 孫國萃,杜軍,馮祥虎,等.基于ZYNQ7000 Linux的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn) [J].現(xiàn)代信息科技,2022,6(4):85-87+90.

[2] 高寒.基于ZYBO開發(fā)平臺(tái)的智慧環(huán)保監(jiān)測(cè)及數(shù)據(jù)采集系統(tǒng)設(shè)計(jì) [J].電子設(shè)計(jì)工程,2018,26(5):174-178+183.

[3] 孫國萃.相位調(diào)制激光雷達(dá)信號(hào)處理系統(tǒng)研究 [D].哈爾濱:哈爾濱師范大學(xué),2022.

[4] 莊瓊.基于AXI總線的DMA高速通道及驅(qū)動(dòng)的設(shè)計(jì)與實(shí)現(xiàn) [D].成都:電子科技大學(xué),2019.

[5] 李朗.基于Zynq-7000高清視頻采集處理系統(tǒng)Linux移植與應(yīng)用程序設(shè)計(jì) [D].南京:南京郵電大學(xué),2017.

[6] 劉健.基于ZYNQ與AD9361的微型頻譜監(jiān)測(cè)設(shè)備的設(shè)計(jì)與實(shí)現(xiàn) [D].成都:電子科技大學(xué),2018.

作者簡(jiǎn)介:馮祥虎(1997—),男,漢族,山東泰安人,碩士研究生在讀,研究方向:嵌入式技術(shù)。

收稿日期:2022-10-26

猜你喜歡
驅(qū)動(dòng)程序總線波形
對(duì)《壓力容器波形膨脹節(jié)》2018版新標(biāo)準(zhǔn)的理解及分析
基于LFM波形的靈巧干擾效能分析
基于PCI Express總線的xHC與FPGA的直接通信
機(jī)載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設(shè)計(jì)
計(jì)算機(jī)硬件設(shè)備驅(qū)動(dòng)程序分析
基于ARM的任意波形電源設(shè)計(jì)
大連臺(tái)使用CTS-1記錄波形特點(diǎn)
多通道ARINC429總線檢查儀
基于EtherCAT總線的ROV控制系統(tǒng)設(shè)計(jì)
基于MPC8280的CPU單元與內(nèi)部總線驅(qū)動(dòng)程序設(shè)計(jì)
湖州市| 宁德市| 黑水县| 蓬安县| 澄江县| 龙南县| 吕梁市| 保定市| 祁阳县| 津南区| 江北区| 崇信县| 兴国县| 宁远县| 乌苏市| 绥德县| 甘德县| 永平县| 祥云县| 阿克苏市| 繁峙县| 鹤岗市| 桐庐县| 舒兰市| 岢岚县| 巴南区| 讷河市| 渭源县| 武穴市| 海盐县| 赞皇县| 永德县| 庆元县| 六盘水市| 新巴尔虎左旗| 读书| 东乡县| 兴宁市| 唐河县| 苍山县| 黎川县|