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

        ?

        基于NIOS II系統(tǒng)的異步串行通信功能的實(shí)現(xiàn)

        2011-08-20 14:32:10顏麗莎朱力宏
        關(guān)鍵詞:波特率字符寄存器

        顏麗莎 朱力宏

        (鄭州鐵路職業(yè)技術(shù)學(xué)院,河南 鄭州 450052)

        NIOS II系統(tǒng)是Altera公司推出的32位RSIC嵌入式處理器。它具有完善的軟件開發(fā)套件,包括編譯器、集成開發(fā)環(huán)境、JTAG調(diào)試等,設(shè)計(jì)者能夠用Altera Quarter II開發(fā)軟件的SOPC Builde系統(tǒng)開發(fā)工具創(chuàng)建處理器系統(tǒng),并能夠根據(jù)需求添加其組件。[1]

        通用異步收發(fā)器(UART),是嵌入式系統(tǒng)上很常用的一個串行接口,由于其方便、簡單、易用等特性,在嵌入式系統(tǒng)中扮演著十分重要的角色。UART通過電平轉(zhuǎn)換可實(shí)現(xiàn)RS232、RS485、RS422等工業(yè)標(biāo)準(zhǔn)的接口,在相關(guān)工業(yè)控制通信中應(yīng)用十分廣泛。UART通信主要通過RXD和TXD兩條信號線,即可實(shí)現(xiàn)全雙工串行通信。

        在一些應(yīng)用中,往往需要兩三個甚至多個串口,選用現(xiàn)成的MCU方案,顯然很難滿足需求。由于UART作為一個組件與其相關(guān)外設(shè)的IP放在SOPC Builder里,可供用戶直接調(diào)用。因此,基于FPAG芯片的NIOS系統(tǒng),可根據(jù)需求方便地配置出多個,甚至是幾十個串口,而且可任意分配引腳。因此,討論和采用NIOS II系統(tǒng)實(shí)現(xiàn)串口通信功能具有重要的實(shí)際意義。

        在以往的關(guān)于基于NIOS II系統(tǒng)串口使用的文章中,往往只針對于寄存器控制等某一細(xì)節(jié)問題進(jìn)行討論。實(shí)際使用中,串口的軟件控制可以通過HAL系統(tǒng)庫、寄存器等幾種不同的控制方法實(shí)現(xiàn)。其每一種方法又各有優(yōu)劣,適合于不同的應(yīng)用場合。本文從NIOS II系統(tǒng)中串口硬件定制入手,重點(diǎn)討論幾種不同軟件控制方法的實(shí)現(xiàn)及特點(diǎn),并提供了詳細(xì)的例程代碼,為NIOS II系統(tǒng)的使用開發(fā)者提供設(shè)計(jì)參考。

        1 硬件設(shè)計(jì)

        本設(shè)計(jì)中要實(shí)現(xiàn)帶NIOS II的FPGA系統(tǒng)與其它系統(tǒng)間的串行通訊,首先要建立硬件連接。在硬件設(shè)計(jì)中,通常采用接口芯片MAX3232構(gòu)成RS232硬件電路實(shí)現(xiàn)不同系統(tǒng)間的電平匹配。

        在Quartus II中新建工程,將圖形設(shè)計(jì)作為頂層文件,通過SOPC將NIOS II系統(tǒng)模塊建立到頂層文件中。NIOS II處理器提供了豐富的外圍設(shè)備,可以根據(jù)需求在SOPC Builder中添加,其中主要包括UART串口IP核。

        UART核實(shí)現(xiàn)了基于FPGA的嵌入式系統(tǒng)與外部器件之間的串行字符流通信。該核可實(shí)現(xiàn)RS-232協(xié)議,提供可以調(diào)節(jié)的波特率、校驗(yàn)、停止/數(shù)據(jù)位,以及可選的RTS/CTS控制信號,用戶可以根據(jù)需要配置該核。

        UART核提供了一個簡單的寄存器映像Avalon從端口,它允許Avalon主外設(shè)(如NIOS II處理器)簡單地通過讀和寫控制寄存器與該核實(shí)現(xiàn)通信。

        該核可直接由SOPC Builder工具創(chuàng)建,創(chuàng)建完成后的接口信號有RXD、TXD、CTX和RTS(其中后兩項(xiàng)可選)。定制時,可通過配置對話框設(shè)定UART核的各項(xiàng)參數(shù)。

        主要參數(shù)有:

        (1)波特率設(shè)置選項(xiàng)

        UART核可以實(shí)現(xiàn)RS-232的所有標(biāo)準(zhǔn)波特率。波特率可以設(shè)定為固定波特率和可變波特率。當(dāng)設(shè)定為固定波特率時,通過下拉框可選115200/9600等,不能通過軟件修改。可變波特率可以通過寫divisor寄存器設(shè)定分頻值,來改變波特率值。

        (2)數(shù)據(jù)位、停止位和奇偶校驗(yàn)位設(shè)置

        這些參數(shù)只能在配置系統(tǒng)創(chuàng)建時設(shè)置,不能在系統(tǒng)生成后通過寫相應(yīng)的寄存器修改。

        (3)流控制

        當(dāng)流控制選項(xiàng)Include CTS/RST pin& contro lregister bits選中時,UART核的cts、dcts、rts、idcts等寄存器位直接反映流控制信號,如果該選項(xiàng)未被選中時,這些狀態(tài)位總是讀為0。

        UART核中的Avalon接口可選擇實(shí)現(xiàn)流傳輸模式。這允許主設(shè)備僅在UART準(zhǔn)備接收一個字符時寫數(shù)據(jù),且僅在UART有效數(shù)據(jù)時讀數(shù)據(jù),當(dāng)選項(xiàng)Include end-of-packet register是on狀態(tài)時,UART核可以結(jié)束一個與主設(shè)備之間的流模式數(shù)據(jù)傳輸。它能自動將接收的字符寫到存儲器中,直到RxD端接收到一個指定的字符為止。結(jié)束字符由endofpacket寄存器決定。

        2 軟件編程

        建立硬件IP核完成硬件設(shè)計(jì)以后,在NIOS II集成開發(fā)環(huán)境里,通過軟件編程及設(shè)置實(shí)現(xiàn)UART的控制。對于NIOS處理器用戶來說,我們總結(jié)了有下列三種控制UART的編程方法。

        2.1 采用HAL系統(tǒng)庫驅(qū)動

        用戶可以使用ANSI C標(biāo)準(zhǔn)庫函數(shù)訪問UART核,例如printf()和getchar()等。ioctl()請求允許HAL用戶直接控制UART核與硬件相關(guān)的功能。

        HAL系統(tǒng)庫API支持對UART核功能部件的完全訪問。NIOS II程序把UART核看成是一個字符模式設(shè)備,使用ANSIC標(biāo)準(zhǔn)庫函數(shù)發(fā)送和接收數(shù)據(jù)。

        下面的代碼是一個最簡單的串口通信程序,具體功能是使用printf函數(shù)將一個字符顯示到stdout設(shè)備上。

        需要注意的是,這個例子中的SOPC Builder系統(tǒng)包含了一個名為uart0的UART核,采用這種方法的UART編程,要在NIOS II IDE的工程配置選項(xiàng)中將所使用的串口設(shè)備uart_0配置為stout。這種方法最簡單,代碼最少。但是缺點(diǎn):1.效率較低;2.由于占用了stout等通道,調(diào)試時,無法用jtag_uart通過NIOS II內(nèi)部控制臺打印信息。

        2.2 采用C標(biāo)準(zhǔn)庫函數(shù)調(diào)用

        通過使用C標(biāo)準(zhǔn)庫函數(shù)對UART設(shè)備完成特定字符操作,這是對串口UART核的標(biāo)準(zhǔn)使用方法。如下面實(shí)例:

        在本例中,SOPC Builder系統(tǒng)包含了一個名為uart1的UART核,該核不需要配置為stdout設(shè)備,程序中把UART設(shè)備作為HAL系統(tǒng)支持的文件類型打開并使用標(biāo)準(zhǔn)的文件操作函數(shù)對UART核進(jìn)行讀寫。[2]

        這種方法將串口作為一個設(shè)備調(diào)用,代碼相對簡單,但運(yùn)行效率較低,適用實(shí)時性要求不高的場合。

        2.3 通過UART寄存器操作。

        NIOS II軟核的串口直接讀寫寄存器方式的編程方法,與C語言的標(biāo)準(zhǔn)輸入/輸出語句相比,可極大地縮短程序執(zhí)行時間,并使得CPU能同時處理其他事務(wù)。

        頭文件“altera_avalon_uart_regs.h”中定義了UART寄存器映射。[3]如下為根據(jù)寄存器實(shí)現(xiàn)UART功能的驅(qū)動程序uart.h文件的節(jié)選:

        這段程序采用寄存器控制的方法實(shí)現(xiàn)了單個字節(jié)的發(fā)送。

        這種方法采用寄存器直接控制串口,程序較為復(fù)雜,但執(zhí)行效率最高,時間最短。

        在Nios IDE集成開發(fā)環(huán)境中將程序進(jìn)行編譯和仿真后,可直接通過JTAG下載線進(jìn)行在線Debug調(diào)試,也可利用Flash燒寫工具Flash programer,通過JTAG下載接口,將*.pof文件和*.jdi文件燒寫到片外Flash中后,實(shí)現(xiàn)脫機(jī)工作。最后將系統(tǒng)與計(jì)算機(jī)RS232串口相連通過串口調(diào)試助手進(jìn)行通訊實(shí)驗(yàn)。

        3 串口通信調(diào)試

        在NIOS II中調(diào)試“Hello world!”的范例的時候,經(jīng)常會出現(xiàn)這樣的錯誤:nios2 terminal:can't open uart:Permission denied。這是因?yàn)樵谡{(diào)試程序時,打開了另外的串口調(diào)試工具,或者認(rèn)為是串口偵聽器。實(shí)際上NIOS II中已經(jīng)集成了串口調(diào)試工具(串口偵聽器)。

        在任務(wù)管理器中nios2 terminal.exe就是這個偵聽串口的進(jìn)程。所以,如果用NIOS II來觀察發(fā)送的數(shù)據(jù),就不要用其他的串口調(diào)試工具。如果在編譯之前就打開了其他的串口偵聽器,編譯鏈接的時候就會出現(xiàn)上述的錯誤。而在程序編譯鏈接后再去打開其他的串口偵聽器,串口就會因?yàn)閚ios2 terminal.exe占用而無法打開。

        解決的方法,如果想用NIOS IDE觀察的話就不要事先打開其他的串口調(diào)試工具。而如果想用其他的串口調(diào)試工具來觀察數(shù)據(jù),通過下載器將FPGA配置文件下載到板子后,刪除任務(wù)管理器中的nios2 terminal.exe,然后打開串口調(diào)試工具。如果程序沒有問題,運(yùn)行后就可以看到數(shù)據(jù)。[4]

        [1]黃佳瑋,陳福深.基于NIOS II的SOPC嵌入式系統(tǒng)設(shè)計(jì)[J].電子元器件應(yīng)用,2009,(7):48-51.

        [2]王剛,張瀲.基于FPGA的SOPC嵌入式系統(tǒng)設(shè)計(jì)與典型實(shí)例[M].北京:電子工業(yè)出版社,2009:255-265.

        [3]唐佳,楊路明.FPGA通用數(shù)字信號處理實(shí)驗(yàn)板的設(shè)計(jì)與實(shí)現(xiàn)[J].科技創(chuàng)新導(dǎo)報,2010,(18):29-30.

        [4]李銳.基于嵌入式NIOS II軟核的串口直接讀寫寄存器方式編程[J].西安:現(xiàn)代電子技術(shù),2010,(14):37-39.

        [5]楊英強(qiáng).一種基于FPGA的UART電路實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2005,(12):82-84.

        猜你喜歡
        波特率字符寄存器
        尋找更強(qiáng)的字符映射管理器
        CAN 總線波特率自適應(yīng)程序設(shè)計(jì)
        智能制造(2020年5期)2020-07-03 06:24:00
        Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
        字符代表幾
        一種USB接口字符液晶控制器設(shè)計(jì)
        電子制作(2019年19期)2019-11-23 08:41:50
        消失的殖民村莊和神秘字符
        基于FPGA的異步串行通信波特率容錯設(shè)計(jì)
        電子測試(2018年7期)2018-05-16 06:27:18
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        C*Core芯片SCI串口波特率容限優(yōu)化
        高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
        永久国产盗摄一区二区色欲| 大香蕉av一区二区三区| 亚洲天堂av中文字幕在线观看| 国产丝袜爆操在线观看| 一本久久a久久免费综合| 国产成人av在线免播放观看新| 亚洲精品国产一区二区| 国产精品毛片完整版视频| 国产自国产在线观看免费观看| 久久国产精品久久精品国产| 自拍 另类 综合 欧美小说| 一本色道久久综合中文字幕| 国产av精品一区二区三区视频| 色婷婷在线一区二区三区| 国产一级二级三级在线观看av| 青春草在线视频观看| 久热国产vs视频在线观看| 囯产精品一品二区三区| 国产自产精品露脸刺激91在线| 高清国产美女av一区二区| 日本精品一区二区三区在线播放| 蜜桃av噜噜噜一区二区三区| 东风日产车是不是国产的| 极品少妇xxxx精品少妇偷拍| 又大又粗又爽18禁免费看| 性饥渴艳妇性色生活片在线播放| 91呻吟丰满娇喘国产区| 亚洲一级无码AV毛片久久| 日本精品少妇一区二区| 男人的天堂一区二av| 中文字幕在线日亚洲9| 亚洲欧美日韩综合久久久| 久久精品国产亚洲5555| 精品国产97av一区二区三区| 黄色影院不卡一区二区| 少妇夜夜春夜夜爽试看视频| 天堂…在线最新版资源| 中文字幕在线码一区| 国产黄片一区视频在线观看| 亚洲精品美女中文字幕久久| 无码爽视频|