<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 基于FPGA技術(shù)實(shí)現與PC串行通信

基于FPGA技術(shù)實(shí)現與PC串行通信

作者: 時(shí)間:2009-05-26 來(lái)源:網(wǎng)絡(luò ) 收藏

控制模塊

本文引用地址:http://dyxdggzs.com/article/192024.htm

主要實(shí)現的功能是:判斷從PC接收的數據,根據預先設計的邏輯進(jìn)行相應的狀態(tài)轉換。例如:給端口預置一個(gè)狀態(tài);送開(kāi)始發(fā)送的標志位,送準備發(fā)送的數據;給DDS送配置信號,控制FIFO的讀寫(xiě)。程序中狀態(tài)機設計如圖3所示。



圖3 狀態(tài)機變換

設計中需要注意的問(wèn)題

波特率的選擇對于串口通信是很重要的,波特率不應太大,這樣數據才會(huì )更穩定。整個(gè)發(fā)送接收過(guò)程中起始位的判別和發(fā)送是數據傳輸的前提。為了避免誤碼的產(chǎn)生,在設計中的串行輸入和輸出端口都應該加上一個(gè)數據鎖存器。

仿真結果

基本的發(fā)送接收如圖4所示,clk是時(shí)鐘信號(57600 bit/s);start_xmit是開(kāi)始發(fā)送標志位;sin是串行輸入;datain是并行輸出;read_bit是接收結束標志位;xmit_bit是發(fā)送結束標志位;sout是串行輸出;dataout是并行輸出;rcv_bit 是接收位數寄存器。發(fā)送接收模塊主要完成把從sin端口接收的串行數據變?yōu)椴⑿袛祿徒odataout;把并行數據datain變成串行數據通過(guò)sout端口串行發(fā)送。


圖4 發(fā)送接收過(guò)程

接收:判斷接收的串行數據sin是否是連續的兩個(gè)0,如果是則進(jìn)入接收過(guò)程;每?jì)蓚€(gè)時(shí)鐘周期接收1個(gè)比特的數據,依次接收到01101010,如果接收到停 止位表明這個(gè)接收過(guò)程結束read_bit=1。根據協(xié)議,數據是按照先低位,后高位的順序發(fā)送的,所以實(shí)際接收的是01010110。發(fā)送:待發(fā)送的并行數據為01010110,當start_xmit=1發(fā)送有效,進(jìn)入發(fā)送過(guò)程;首先發(fā)送兩個(gè)起始位0,保證長(cháng)度為兩個(gè)時(shí)鐘周期,然后依次發(fā)送01101010,每?jì)蓚€(gè)時(shí)鐘周期發(fā)送1比特,最后發(fā)送停止位,發(fā)送過(guò)程結束xmit_bit為1。

發(fā)送控制字

圖5中clk是時(shí)鐘信號;a是PC發(fā)來(lái)的16進(jìn)制的控制字,也就是圖4中的并行輸出dataout; ma1cnt、ma2cnt、ma3cnt是三個(gè)寄存器;clrr是系統清零信號;ddsclr是DDS配置信號;fifo_clk,fifo_rd,fifo_wr,ram_rst是FIFO的時(shí)鐘、讀、寫(xiě)、清零信號;start_xmit是發(fā)送開(kāi)始標志位;b是準備發(fā)送的數據。當接收a為1時(shí),fifo_wr置1;當a為18時(shí),把ma1cnt的值送到b。其他的操作類(lèi)似,主要是端口的置位,FIFO讀寫(xiě)狀態(tài)的控制。



圖5 發(fā)送控制字過(guò)程

從FIFO中讀寫(xiě)數據

圖6中SER_CLOCK是系統時(shí)鐘3.6864MHz,sa是分頻后的頻率57600bit/s;SIN是串行輸入;data是準備輸出的數據;SOUT是串行輸出;fifoclk、fifowr、fiford是FIFO的讀時(shí)鐘、寫(xiě)、讀使能。讀過(guò)程:讀使能有效,先產(chǎn)生6個(gè)讀時(shí)鐘,但是不往SOUT發(fā)送數據,因為FIFO的前6個(gè)周期不是有效數據。然后產(chǎn)生一個(gè)讀時(shí)鐘,將FIFO的數據送到data,按照通信協(xié)議通過(guò)SOUT發(fā)送出去,發(fā)送結束再產(chǎn)生一個(gè)讀時(shí)鐘,讀取FIFO的數據,進(jìn)行下一次串行輸出。



圖6 從FIFO讀數據的過(guò)程

結語(yǔ)

隨著(zhù)可編程器件的不斷發(fā)展和廣泛應用,與外圍設備的通信也越來(lái)越多。本文介紹的的實(shí)現具有可復制性,只需改變系統時(shí)鐘頻率和控制模塊就可以在其他場(chǎng)合下使用。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>