隨著超大規(guī)模集成電路(Very Large Scale Integration VLSI)工藝技術(shù)的發(fā)展,芯片的規(guī)模越來越大,集成規(guī)模以摩爾定律增長?,F(xiàn)場可編程邏輯器件(FPGA)由于兼具可編程邏輯器件的現(xiàn)場可編程的靈活性,以及門陣列器件集成度高的優(yōu)點(diǎn),在數(shù)字系統(tǒng)設(shè)計(jì)被廣泛采用。同時(shí),ASIC技術(shù)的不斷完善以及功能強(qiáng)大的EDA軟件開發(fā)平臺的出現(xiàn),使得FPGA器件在現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)和微電子技術(shù)應(yīng)用中起著越來越重要的作用。近幾年來,Xilinx等公司推出了內(nèi)部嵌入存儲器、微處理器的FPGA器件,使得這種器件的應(yīng)用更顯其優(yōu)越性;但在某些應(yīng)用場合如數(shù)據(jù)采集時(shí),需要將采集到的數(shù)據(jù)傳送給PC機(jī),然后由PC機(jī)進(jìn)行數(shù)據(jù)處理,這時(shí)就要借助單片機(jī)來完成。因此,有必要在FPGA器件中設(shè)計(jì)一種通信接口電路,以使設(shè)計(jì)的應(yīng)用系統(tǒng)具備通信功能。由于SCI通信接口電路具有結(jié)構(gòu)相對簡單、易于實(shí)現(xiàn)等特點(diǎn),因此本文以SCI接口電路為例介紹基于FPGA器件實(shí)現(xiàn)的接口電路IP核的設(shè)計(jì)。
SCI接口電路結(jié)構(gòu)
SCI接口端口映射
SCI的端口映射如圖1所示,共有20個(gè)端口,各端口的功能為:
SCI接口結(jié)構(gòu)框圖
為SCI接口內(nèi)部結(jié)構(gòu)框圖如圖2所示,主要包括以下單元:
發(fā)送器(TX)及其控制與狀態(tài)寄存器。發(fā)送數(shù)據(jù)緩沖寄存器(TXBUF0…7)包含SCI接口要發(fā)送的數(shù)據(jù);發(fā)送移位寄存器(TXSHF);發(fā)送狀態(tài)寄存器位(TXRDY、TXEMPT);發(fā)送控制寄存器位(TINTENA、TXENA)。
接收器(RX)及其控制與狀態(tài)寄存器。接收數(shù)據(jù)緩沖寄存器(RXBUF0…7)包含SCI接口從SCIRXD接收到的數(shù)據(jù);接收移位寄存器(RXSHF);接收狀態(tài)寄存器位(RXRDY);接收控制寄存器位(RINTENA、RXENA)。
可編程波特率發(fā)生器。由波特率高byte寄存器和波特率低byte寄存器組成,可得到64k種不同的位傳輸速率。當(dāng)系統(tǒng)時(shí)鐘為10MHZ時(shí),其位傳輸速率為19.07~625.0kb/s。寄存器地址譯碼器。寄存器地址譯碼器負(fù)責(zé)對ADDR0…ADDR2進(jìn)行譯碼,確保能讀/寫SCI中相應(yīng)的寄存器。其與RD和WR配合完成對SCI內(nèi)部各寄存器的讀/寫操作。
數(shù)據(jù)傳輸格式
為簡化設(shè)計(jì),SCI以固定的串行數(shù)據(jù)格式傳送數(shù)據(jù),采用NRZ幀格式對數(shù)據(jù)進(jìn)行編碼,一個(gè)數(shù)據(jù)由1bit起始位、8bit數(shù)據(jù)位和一個(gè)停止bit共10bit組成。為確保采樣到的數(shù)據(jù)位可靠,選取每位數(shù)據(jù)包含8個(gè)SCICLK周期。
波特率的產(chǎn)生
SCI內(nèi)部的串行時(shí)鐘(SCICLK)由系統(tǒng)時(shí)鐘SCLK與波特率寄存器共同決定。通過16bit波特率選擇寄存器,可以為內(nèi)部串行時(shí)鐘提供64k種不同的傳輸速率,其計(jì)算公式為:
Baud=SCLK/[(BRR+1)*8]其中BRR為16bit波特率選擇寄存器的值。
SCI異步通信
如前所述,在異步通信模式下一幀數(shù)據(jù)包含一個(gè)起始bit、8個(gè)數(shù)據(jù)bit、一個(gè)停止bit。每個(gè)數(shù)據(jù)位占用8個(gè)SCICLK周期。
接收數(shù)據(jù)時(shí)序
接收器在收到有效的起始位后開始操作,有效的起始位由連續(xù)的0電平組成,長度為4個(gè)連續(xù)的內(nèi)部SCICLK周期。對于起始位后的各位,接收器通過對該位的中間進(jìn)行3次采樣來決定位值,采用在第4、第5、第6個(gè)SCICLK周期,位值取決于多數(shù)采樣點(diǎn)的值。數(shù)據(jù)從SCIRXD進(jìn)入RXSHF,移位進(jìn)入RXBUF寄存器,并產(chǎn)生中斷請求,RXDRDY置1,表示已經(jīng)接收到新字符]。接收一幀數(shù)據(jù)的時(shí)序如圖3所示。
發(fā)送數(shù)據(jù)時(shí)序
發(fā)送器與接收器工作原理基本相同,在TXDRDY為低時(shí),向發(fā)送數(shù)據(jù)緩沖寄存器寫入一個(gè)數(shù)據(jù)后啟動(dòng)發(fā)送;然后數(shù)據(jù)進(jìn)入TXSHF,同時(shí)TXDRDY為高,表示TXBUF可以寫入新值,并產(chǎn)生一個(gè)中斷請求。數(shù)據(jù)發(fā)送時(shí)序如圖4所示。
VerilogHDL實(shí)現(xiàn)
狀態(tài)機(jī)嵌套模型
由于SCI接口牽涉到復(fù)雜的狀態(tài)機(jī)描述,需要采用有限狀態(tài)機(jī)的嵌套,形成樹狀的控制邏輯。這一點(diǎn)和所提倡的層次化、結(jié)構(gòu)化的自頂向下的設(shè)計(jì)方法相吻合。圖5是一種簡單的狀態(tài)機(jī)嵌套模型。
采樣一位數(shù)據(jù)的狀態(tài)機(jī)
接收數(shù)據(jù)起始位檢測狀態(tài)機(jī)
仿真結(jié)果
由圖7仿真波形可知,采樣一位數(shù)據(jù)的狀態(tài)機(jī)在數(shù)據(jù)位的第4、5、6個(gè)內(nèi)部sclk時(shí)鐘進(jìn)行。位值由多數(shù)采樣的值決定,圖中rxd在第4、5、6圖7采樣一位數(shù)據(jù)的仿真波形個(gè)sclk時(shí)的值為1,故dok在第8個(gè)sclk時(shí)鐘輸出1,表示此次采樣的一位數(shù)據(jù)為1。
圖7采樣一位數(shù)據(jù)的仿真波形
結(jié)論
SCI接口電路由VerilogHDL語言描述,可讀性好,便于修改與測試,可方便地嵌入到用戶的FPGA系統(tǒng)。利用Xilinx公司的Spartan ⅡFPGAXC2S100成功地實(shí)現(xiàn)了FPGA與PC機(jī)的串行通信。如在此基礎(chǔ)上增加其它的控制寄存器,則可設(shè)計(jì)出功能更為完善的SCI接口電路。
-
FPGA
+關(guān)注
關(guān)注
1643文章
21985瀏覽量
615092 -
存儲器
+關(guān)注
關(guān)注
38文章
7639瀏覽量
166616 -
通信
+關(guān)注
關(guān)注
18文章
6184瀏覽量
137467
發(fā)布評論請先 登錄
怎么使用FPGA實(shí)現(xiàn)SPI總線的通信接口?
FPGA SERDES接口電路怎么實(shí)現(xiàn)?
通過FPGA實(shí)現(xiàn)溫控電路接口及其與DSP通信接口的設(shè)計(jì)
設(shè)計(jì)SCI串口通信程序
通過SCI實(shí)現(xiàn)串行通信
如何實(shí)現(xiàn)Simulink與DSP 28335之間的SCI通信
基于FPGA的通信接口模塊設(shè)計(jì)與實(shí)現(xiàn)

SCI中斷接收

SCI中斷發(fā)送

評論