基于FPGA的RS232異步串行口IP核設(shè)計(jì)
1 引言
本文引用地址:http://butianyuan.cn/article/151105.htm數(shù)據(jù)采集系統(tǒng)常需要進(jìn)行異步串行數(shù)據(jù)傳輸。目前廣泛使用的RS232異步串行接口,如8250、 NS16450等專用集成器件,雖然使用簡(jiǎn)單,卻占用電路板面積、布線復(fù)雜等缺點(diǎn)。片上系統(tǒng)SoC(System on Chip)是以嵌入式系統(tǒng)為核心,以IP復(fù)用技術(shù)為基礎(chǔ),集軟、硬件于一體的設(shè)計(jì)方法。使用IP復(fù)用技術(shù),將UART集成到FPGA器件上,可增加系統(tǒng)的可靠性,縮小PCB板面積;其次由于IP核的特點(diǎn),使用IP核可使整個(gè)系統(tǒng)更加靈活,還可根據(jù)需要實(shí)現(xiàn)功能升級(jí)、擴(kuò)充和裁減。這里采用VHDL語言編寫 UART模塊,將其集成到FPGA上,與器件其他功能模塊構(gòu)成片上系統(tǒng)SoC。
2 異步串行口模塊設(shè)計(jì)與實(shí)現(xiàn)
2.1 UART結(jié)構(gòu)
圖1為完整的UART接口,包括由發(fā)送鎖存器、發(fā)送移位寄存器和邏輯控制組成的發(fā)送模塊(txmit),以及由接收鎖存器、接收移位寄存器和邏輯控制組成的接收模塊(rxcver)。發(fā)送模塊和接收模塊除共用復(fù)位信號(hào)、時(shí)鐘信號(hào)和并行數(shù)據(jù)線外,各自分別有輸入輸出和邏輯控制單元。
2.2 UART的幀格式
圖2為UART的幀格式。該幀格式包括線路空閑狀態(tài)(idie,高電平)、起始位 (start bit,低電平)、5~8位數(shù)據(jù)位(databit)、校驗(yàn)位(parity bit,可選)和停止位(stop bit,位數(shù)可為1、1.5、2位)。該格式是由起始位和停止位實(shí)現(xiàn)字符同步。UART內(nèi)部一般有配置寄存器,可配置數(shù)據(jù)位數(shù)(5~8位)、是否有校驗(yàn)位和校驗(yàn)的類型、停止位的位數(shù)等設(shè)置。
2.3 波特率時(shí)鐘的控制
由于數(shù)字量接口、工作模式選擇、實(shí)時(shí)監(jiān)測(cè)接口的波特率都不同,UART核包含一個(gè)可編程的波特率發(fā)生器,可靈活配置波特率。波特率發(fā)生器給發(fā)送模塊和接收模塊提供發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的基準(zhǔn)時(shí)鐘,波特率發(fā)生器產(chǎn)生的時(shí)鐘mclkx16是串行數(shù)據(jù)波特率的16倍。它對(duì)系統(tǒng)時(shí)鐘n分頻,n=系統(tǒng)時(shí)鐘/波特率×16,針對(duì)不同波特率設(shè)定相應(yīng)數(shù)值可得到所期望的波特率時(shí)鐘。 Script type=text/javascript>function ImgZoom(Id)//重新設(shè)置圖片大小 防止撐破表格 { var w = $(Id).width; var m = 650; if(w m){return;} else{ var h = $(Id).height; $(Id).height = parseInt(h*m/w); $(Id).width = m; } } window.onload = function() { var Imgs = $(content).getElementsByTagName(img); var i=0; for(;i
2.4 發(fā)送模塊設(shè)計(jì)
發(fā)送模塊分為空閑、載入數(shù)據(jù)、移位等3種模式。如圖3所示。當(dāng)并行8位數(shù)據(jù)從總線寫入發(fā)送模塊后,發(fā)送模塊將并行數(shù)據(jù)裝入鎖存器thr中,然后在移位寄存器tsr中將數(shù)據(jù)移位,產(chǎn)生完整的發(fā)送序列(包括起始位,數(shù)據(jù)位,奇偶校驗(yàn)位和停止位),以相應(yīng)波特率從tx發(fā)送。發(fā)送模塊的輸入時(shí)鐘mclkx16是串行數(shù)據(jù)波特率的16倍,模塊內(nèi)部將其16分頻后得到波特率時(shí)鐘txclk。
發(fā)送模塊部分VHDL程序如下:
評(píng)論