解決了,我看這本書找到答案的。
Serial port complete :
programming and circuits for RS-232 and RS-485 links and networks
Jan Axelson.
原來在Sample資料的時後,可以用一個16倍Baud rate的clock去sample,
不要使用Baud rate clock去sample,要不然會有我下面所說的問題。
這個16倍的clock在偵測到Start bit的時後往後數16 clocks
就會跳到第一個data bit。再數8 clocks大約就會到該bit的中間位置,
此位置是sample資料較好的位置。
※ 引述《zxvc (zxvc)》之銘言:
: 我的FPGA板說明書寫振盪器是33.3MHz(我懷疑它應該是33,333,333Hz)。
: 我最近要設計從PC經由RS-232傳資料到FPGA,我使用9 pin connector。
: 感謝CuckooBoy網友的幫助,讓我學到不少東西。
: 我現在有個問題就是因為我的振盪器頻率不能被任何的
: 標準的Baud rate整除,例如9600, 14400, ...。
: CuckooBoy網友是建議我把所有的標準Baud rate除33.3MHz,
: 取商最靠近整數的Baud rate,再做除頻器(我是設計數位電路)。
: 我後來選定Baud rate = 38400,後來我果然可以傳資料到FPGA上了,
: 但是可惜的是我發現仍然有機會收到錯誤的資料(我是用非同步接收)。
: 我想這是因為PC的Baud rate並不與FPGA的Baud rate完全相同所致,
: 有一點小誤差,我自己分析的結果,這是難免會造成的錯誤,
: 比如,FPGA Baud rate一個clock cycle比PC多1%,
: 只要今天FPGA Baud rate的clock的active edge出現在
: Start bit cycle的92%位置,那麼在sample第10個bit就會sample到錯誤的值。
: 不知道我的觀念有沒有誤?
: 請問有這方面設計經驗的大大要如何解決此問題?
--
往生淨土咒:
南無阿彌多婆夜 哆他伽哆夜 哆地夜他 阿彌唎都婆毘 阿彌唎哆
悉耽婆毘 阿彌唎哆 毘迦蘭哆 伽彌膩 伽伽那 只多迦隸 莎婆訶
《佛說阿彌陀經》http://web.cc.ncu.edu.tw/~93501025/amtf.doc
《金剛經》http://web.cc.ncu.edu.tw/~93501025/jg.doc
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.204.3