打印

关于rs232的接收模块有点不理解

[复制链接]
1725|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jakfens|  楼主 | 2012-2-16 13:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ifpga| | 2012-2-16 14:06 | 只看该作者
呵呵,这个文档不错
接收好像就是过采样,一般用16倍波特率的频率对输入脚进行采样,
然后,判断1多还是0多,以确定此位是0还是1
还有一种省事的办法就是,直接使用 每一位第8次采样得到的值

使用特权

评论回复
板凳
ifpga| | 2012-2-16 14:07 | 只看该作者
忘了说,刚才没仔细看这个文档,只是自己之前在其它地方看到的

使用特权

评论回复
地板
jakfens|  楼主 | 2012-2-16 14:18 | 只看该作者
本帖最后由 jakfens 于 2012-2-16 14:19 编辑

哦哦 主要是那个接受的时候他说要在数据下降沿的时候判断开始位 这个文档上面的几句代码不是太了解
自己画了下时序图 楞是没搞出来
First, the incoming "RxD" signal has no relationship with our clock.
We use two D-flipflops to oversample it, and synchronize it to our clock.
reg [1:0] RxD_sync;
always @(posedge clk) if(Baud8Tick) RxD_sync <= {RxD_sync[0], RxD};
We filter the data, so that short spikes on the RxD line aren't mistaken with start bits.
reg [1:0] RxD_cnt;
reg RxD_bit;

always @(posedge clk)
if(Baud8Tick)
begin
if(RxD_sync[1] && RxD_cnt!=2'b11) RxD_cnt <= RxD_cnt + 1;
else
if(~RxD_sync[1] && RxD_cnt!=2'b00) RxD_cnt <= RxD_cnt - 1;

if(RxD_cnt==2'b00) RxD_bit <= 0;
else
if(RxD_cnt==2'b11) RxD_bit <= 1;
end

使用特权

评论回复
5
GoldSunMonkey| | 2012-2-16 15:14 | 只看该作者
又是0分,直接无视

使用特权

评论回复
6
ifpga| | 2012-2-16 15:26 | 只看该作者
哈哈,哥哥,不能只为分啊:lol

使用特权

评论回复
7
GoldSunMonkey| | 2012-2-16 15:32 | 只看该作者
:)

使用特权

评论回复
8
GoldSunMonkey| | 2012-2-16 15:36 | 只看该作者
本帖最后由 GoldSunMonkey 于 2012-2-16 15:42 编辑

:L你悬赏的分数送给别人,又不会减少你的分数。
你连点分数都不舍得给别人,别人为什么要帮助你。

使用特权

评论回复
9
jakfens|  楼主 | 2012-2-16 15:38 | 只看该作者
不懂啥意思

使用特权

评论回复
10
GoldSunMonkey| | 2012-2-16 15:42 | 只看该作者
重新编辑了,再看一下。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:鄙视电工就是鄙视全人类的智慧;抛弃电子就是毁灭文明,人类将回到刀割火种的时代

30

主题

1865

帖子

2

粉丝