基于Nios II的UART與PC間的數(shù)據(jù)通信
Nios II系列嵌入式處理器使用32位的指令集結(jié)構(gòu)ISA,完全與二進(jìn)制代碼兼容,它是Altera公司的第二代軟核嵌入式處理器,性能超過(guò)200DMIPS。允許設(shè)計(jì)者在很短的時(shí)間內(nèi)構(gòu)建一個(gè)完整的可編程芯片系統(tǒng),風(fēng)險(xiǎn)和成本比中小規(guī)模的ASIC小。這種開(kāi)發(fā)方式特別適合設(shè)計(jì)針對(duì)網(wǎng)絡(luò)、電信、數(shù)據(jù)通信、嵌入式和消費(fèi)市場(chǎng)的各種嵌入式應(yīng)用。
本文引用地址:http://m.butianyuan.cn/article/150764.htm本文基于以上這些特點(diǎn),從硬件和軟件兩個(gè)方面探討了基于Cyclone II系列EP1C12Q240C8與PC的通信方案。
1 串行異步通信的硬件接口
通用異步收發(fā)器,簡(jiǎn)稱(chēng)UART,能把字符的并行代碼變換成串行代碼發(fā)送出去,而且也能把這種格式的串行代碼接收下米,并且轉(zhuǎn)換成相應(yīng)的并行代碼。串行異步通信協(xié)議中字符代碼傳輸格式如圖1所示。在沒(méi)有傳送代碼時(shí),通信線會(huì)一直處丁邏輯1狀態(tài),而傳送時(shí),數(shù)據(jù)兩頭必須加上起始位和停止位。起始位總是邏輯0狀態(tài)。停止位總是邏輯1狀態(tài),其持續(xù)時(shí)間可選為1位、1.5位或2位。數(shù)據(jù)的低位在前,但根據(jù)不同的編碼規(guī)則,數(shù)據(jù)可能有5位、6位、7位或8位。圖1中的校驗(yàn)位可根據(jù)需要選擇奇校驗(yàn)、偶校驗(yàn)或不要校驗(yàn)位。
1.1 UART內(nèi)核綜述
AVALON總線是一種結(jié)構(gòu)相對(duì)簡(jiǎn)單的總線,用于連接NiosⅡ和其他外設(shè)。它規(guī)定了主從部件間的端口連接關(guān)系,以及部件間通信的時(shí)序關(guān)系。AVALON總線擁有多種傳輸模式,以適應(yīng)不同外設(shè)要求?;緜鬏斈J绞窃谥鲝耐庠O(shè)之間進(jìn)行單字節(jié),半字或字的傳輸。AVALON總線還支持一些高級(jí)傳輸模式,例如支持流操作,支持延時(shí)操作, 支持多個(gè)主設(shè)備同時(shí)訪問(wèn)。帶Avalon接口的UART內(nèi)核為Altera FPGA上的嵌入式系統(tǒng)合外部設(shè)備提供了串行字符流的通信方式,內(nèi)核執(zhí)行RS-232協(xié)議時(shí)序,由于大部分Altera FPGA系列上的I/O引腳不遵循RS-232電壓電平規(guī)范,如果通過(guò)RS-232連接器的信號(hào)直接與FPGA相連,可能會(huì)損害器件。為了滿足RS-232信號(hào)電平要求,在FPGA I/O腳和對(duì)應(yīng)得RS-232外部接頭間需要連接一個(gè)外部電平轉(zhuǎn)換器。UART內(nèi)核結(jié)構(gòu)框圖如圖2所示,在UART內(nèi)核和RS-232連接器之間采用Maxim公司生產(chǎn)的MAX3232型收發(fā)器。
UART發(fā)送器包括發(fā)送數(shù)據(jù)寄存器Txdata和相應(yīng)的發(fā)送移位寄存器。Avalon主控制器通過(guò)Avalon從控制器端口寫(xiě)數(shù)據(jù)到發(fā)送數(shù)據(jù)寄存器。在當(dāng)前不進(jìn)行串行發(fā)送移位操作時(shí),發(fā)送移位寄存器自動(dòng)從發(fā)送數(shù)據(jù)寄存器中轉(zhuǎn)入數(shù)據(jù)。發(fā)送移位寄存器直接連接到TXD輸出。數(shù)據(jù)最低有效位先從TXD移出。發(fā)送數(shù)據(jù)寄存器和發(fā)送移位寄存器提供雙重緩沖。主控制器可以在前一個(gè)字符正在移出時(shí)將新數(shù)值寫(xiě)入發(fā)送數(shù)據(jù)寄存器,并可通過(guò)讀出狀態(tài)寄存器的發(fā)送準(zhǔn)備好位TRDY、發(fā)送移位寄存器空位TMT和發(fā)送溢出錯(cuò)誤位TOE來(lái)監(jiān)視發(fā)送器的狀態(tài)。發(fā)送邏輯根據(jù)RS-232規(guī)范在串行TXD數(shù)據(jù)流中自動(dòng)插入數(shù)量正確的起始位、校驗(yàn)位和停止位。
UART接收器包括接收移位寄存器Rxdata和相應(yīng)的接收數(shù)據(jù)寄存器。Avalon主控制器通過(guò)Avalon從控制器端口讀接收數(shù)據(jù)寄存器的數(shù)據(jù)。每當(dāng)新字符完全接收后接收數(shù)據(jù)寄存器自動(dòng)從接收移位寄存器裝入數(shù)據(jù)。接收移位寄存器和接收數(shù)據(jù)寄存器提供雙重緩沖。接收數(shù)據(jù)寄存器在后續(xù)字符正在移入接收移位寄存器時(shí)可以保持前面的接收字符。主控制器可通過(guò)讀狀態(tài)寄存器的接受準(zhǔn)備好位RRDY、接收溢出錯(cuò)誤位ROE、間斷檢測(cè)位BRK、校驗(yàn)錯(cuò)誤位PE和幀錯(cuò)誤FE位來(lái)監(jiān)控接收器的狀態(tài)。接收邏輯根據(jù)RS-232規(guī)范在串行RXD數(shù)據(jù)流中自動(dòng)檢測(cè)數(shù)量正確的起始位、停止位和校驗(yàn)位。接收邏輯檢查接收數(shù)據(jù)中的4種異常隋況,并設(shè)置對(duì)應(yīng)的狀態(tài)寄存器位。
UART內(nèi)核的內(nèi)部波特率時(shí)鐘來(lái)源于Avalon時(shí)鐘輸入,內(nèi)部波特率時(shí)鐘通過(guò)時(shí)鐘分頻器生成,除數(shù)值可以由系統(tǒng)指定,也可以由其寄存器中存器的16位值來(lái)決定,波特率和除數(shù)值之間的關(guān)系如下:
除數(shù)=int((時(shí)鐘頻率)/(波特率)+0.5)
波特牢=(時(shí)鐘頻率)/(除數(shù)+1)
分頻器相關(guān)文章:分頻器原理
評(píng)論