Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 3355|回復: 5
打印 上一主題 下一主題

[問題求助] CPLD UART問題....thx

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-3-4 15:34:41 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
小弟為初學,目前使用CPLD做個UART收發,使用PC端TELIX軟體由Keyboard送出按鍵ASCII碼,經由CPLD收到後回傳至PC端,但目前單鍵送出都正常,但同一鍵按著不放,卻發生CPLD送出時掉資料了,(如PC端送出20筆資料,CPLD收到20筆,送出時卻只送15筆,PC端收到也只有15筆),小弟將程式碼附上,懇請各位可以幫我看看嗎?提供些意見,或者範例碼等等....感激!...thx
: x8 i" Y5 ?  W( a# t
8 R5 O+ Q! s! x2 n7 R4 P# W& @0 o

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
6#
發表於 2008-3-6 11:28:46 | 只看該作者
您好
/ V+ ^# {8 c7 I3 v" v8 y+ h$ Z1 C1./ ^6 J% M- R( p4 b
關於傳送資料覆蓋問題,可以研究一下8250或16450的data sheet裡! w+ Q. h  N2 t) K; _; T5 v
tx部分
1 e" Q9 g: W# p7 ]5 _/ B. I  R% ~0 \0 n$ S3 E
2.% c& F: O& Z7 c2 D0 z
如果想搭配FIFO,請參考16550 data sheet,裡面寫的很清楚; e* z, h& v" H  I* R( j  v
2 }$ f! v8 i3 w5 ?
要設計uart功能,16450,16550是很好的參考資料
% |$ I/ }  K, @2 o) P在設計時有些設計上技巧或沒想到的問題,都可從data sheet; j* x/ h" [3 S( |/ t0 D
上找到很好的啟發
2 ?; Z) D4 ]9 O0 `2 x" Q$ D9 M: Q+ C0 B# P2 X
建議好好的k一下吧
5#
發表於 2008-3-5 20:31:51 | 只看該作者
好像可以利用txd_doneH 來產生一個 loadTSR 把資料從THR--->TSR 並在下一個clock STATE 產生一個 pulse 通知CPU 或 接收端把下一筆DATA 再餵入THR.每次餵DATA,除了看txd_startH(代表有沒有資料待傳),還要等pulse 通知.
4#
 樓主| 發表於 2008-3-5 17:04:07 | 只看該作者

回復 2# 的帖子

您好!請問您,如果我8bit資料一進來發射端時,該如何把它hold呢?是否有個機制,比如hold等到上一筆資料從發射端送出時,在從THR丟至TSR,再送出下一筆資料,可否請您敘述一下,感謝您...
3#
 樓主| 發表於 2008-3-5 16:53:16 | 只看該作者

如有看到程式的前輩們...請幫忙

如有看到小弟放的程式前輩們,可否給些意見呢?如需加FIFO之類的,或是收與發機制不夠完善導致此問題,小弟我有自行加入QuartusII FIFO模組,但此問題仍然存在,所以先不考慮是否buffer不夠,目前排除方向為,收到資料時,與發送資料時,之間的機制不夠完善,懇請大家給些意見或範例等等,感激!謝謝..
2#
發表於 2008-3-5 16:50:28 | 只看該作者
我覺得好像是接收端或發射端產生"buffer overflow",應為你的RDR只有一個,而且只有TSR,沒有THR(transmitter holding register),應該可以在發射端多加一個或2個"transmitter holding register".9 P# Q% I: k) n

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-5-14 04:19 PM , Processed in 0.129017 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表