<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的串行接收模塊的設計

基于FPGA的串行接收模塊的設計

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

4 接收串行數據的軟件設計
本方案采用的串行異步通信的幀格式為:1位起始位+5位數據位+1位停止位。經(jīng)檢測與分析,如果已經(jīng)確定異步通信的幀格式,那么每個(gè)字符就可以分別用固定的 7位數據表示。比如:字符‘ 0’:‘0000011’;字符‘ 1’:‘0100011’。其中第 1位數據‘ 0’為起始位,昀后 1位數據‘1’為停止位,中間 5位數據為數據位。例如:用串口調試助手軟件發(fā)送字符串‘100’,則會(huì )在 的 RxD引腳測得如圖 3的波形。其中, st1,st2,st3表示先后發(fā)送的 3個(gè)字符, t1,t2,t3則表示對每個(gè)字符進(jìn)行檢測時(shí)所經(jīng)過(guò)的 3種狀態(tài)。
正如圖3波形所示,接收邏輯首先通過(guò)檢測輸入數據的下降沿來(lái)檢查起始位。然后產(chǎn)生接收時(shí)鐘,利用接收時(shí)鐘來(lái)采樣串行輸入數據。由于字符‘0’和‘1’在5位數據位中的僅第一位有區別,因此只要準確地將第一位數據檢測出來(lái)就可以得出串口調試助手所發(fā)送的字符串。再利用移位操作,將字符串存儲在緩存器(即另一組可以更新的字符串)中。


至于剩下的4位數據位和一位停止位,就可以不隨接收時(shí)鐘采樣。待串口調試組手發(fā)送的字符串全部存儲之后,一起在該中進(jìn)行判斷,并根據字符串的不同來(lái)控制不同的輸出。接收時(shí)鐘是根據數據傳輸的波特率產(chǎn)生的:接收時(shí)鐘= 16×19200Hz。它始于起始位的下降沿,終于第5位數據位的上升沿。下面是實(shí)現檢測第1個(gè)字符的VHDL源程序。


if(clk0'event and clk0='1')then ----外部時(shí)鐘
case state is
when st1=> ----第1 個(gè)字符開(kāi)始
case tate is
when t1=> ----起始位開(kāi)始
if(rxd='1')then ----未到下降沿不計數
cnt16 = 0000;
cnt48 = 000000; ----所有時(shí)鐘清零
else cnt16 =cnt16+1; ----下降沿來(lái),起始位計數開(kāi)始
end if;
if(cnt16=1111)then
tate = t2; ----起始位完,進(jìn)入數據位
end if;
when t2=> ----進(jìn)入第1 位數據位
if(cnt16=1111)then
cnt16 = 0000;
else cnt16 = cnt16+1;
end if;
if(cnt16=0011)then
sdata = rxd; ----采樣第1 位數據位
end if;
if(cnt16=0111)then
if(sdata='0')then
data(0)='0';
else data(0)='1'; ----判斷采樣值,如果為0,則發(fā)送字符為0,
反之亦然
end if;
end if;
if(cnt16=1111)then
tate = t3; ----第1 位數據位完,進(jìn)入下一狀態(tài)
end if;
when t3=> ----進(jìn)入第2 位,第3 位和第4 位數據狀態(tài)
if(cnt16=1111)then

cnt48 = 000000;
else cnt48 = cnt48+1; ----不對剩下的數據采樣,直接計數
end if;
if(cnt48=101111)then
sdata ='0'; ----采樣位清零
tate = t1; ----進(jìn)入采集下一字符的準備狀態(tài)
state = st2; ----第1 個(gè)字符采集完,進(jìn)入下一字符
end if;
end case;
fdata(0) = data(0); ----采集完的字符存入緩存區
…… …… ……



關(guān)鍵詞: FPGA 串行接收 模塊

評論


相關(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>