h2feo4 无机酸 请进,有个所谓“归零码”用VHDL识别的问题解决不了,实在没思路了。
学着VHDL,突发奇想想在CPLD里面实现一个芯片的功能,结果遇到这么一个问题,纠结了一天,也没什么思路,实在没办法了,求教。问题如下:
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_612565UUBZXN.png
(原文件名:时序波形图.png)
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_612566IX2IZT.png
(原文件名:时间.png)
上面是芯片手册里面提供的输入码型时序波形图和时间,整个系统的时钟是500KHz,每个码型的持续时间1.55us+0.78us=2.33us,比系统时钟略慢一点,这样怎么才能分辨出0、1两种码型的不同呢?难道是给系统时钟倍频然后采样判断?我觉得肯定不会这样,因为目标芯片很廉价,应该不会用到这种复杂的方法。
请 h2feo4 无机酸 能不能指点一个思路?实现成功之后,我会把整个工程上传,让大家学习。谢谢了! 壹贰叁肆伍陆柒捌玖零,等专家来
~~%%%%%%%%_,_,
~~%%%%%%%%%-"/./
~~%%%%%%%-' /`.
~~%%%%%%%%'. ,__;
~~%%%%%%%%' : \O\
~~%%%%%%%%' : `.
~~%%%%%%%%' `. _, '
~~%%%%%%%%' .'`-._ `.
~~%%%%%%%%%' : `-. (,;
~~%%%%%%%%' : `._\_.'
~~%% %%' ; 边沿触发后计数统计2us时间段,地电平计数(按你的一个时钟比如0.2us),根据计数值,能区分0 1 复位 先说说我的思路吧
首先500KHz的系统时钟,即使双沿采样,也是不足以还原数据的
但用它来检测RESET还是绰绰有余的
如果我的话
首先要过采样,频率至少要比输入信号高一个数量级
第二步,用个双向计数器,在输入信号为1的时候向下计,0的时候向上计
等一个周期结束的时候,锁存结果并清零,看锁存到的计数值是大于0还是小于0就行了
更直接的说法是,计数值的最高位就是解码的结果
RESET的检测,用系统时钟计数低电平的宽度就行了
至于采样时钟从哪里来,有片上振荡器的可以直接用,没有的就搭个环形振荡器或者RC振荡器
这些东西全加起来也就二十几个MacroCell吧,¥5的CPLD足以应付了 提高时钟频率,500kHz太低了。 时钟的上升沿和下降沿都缓存,如果与前一次相同,则低电平是0,高电平是1,三次或多次相同则reset
? lukeunderwood : 朋友是做LED显示的吧,我猜测你用的芯片不是天利就是天微 回复【6楼】hxl_led
lukeunderwood : 朋友是做led显示的吧,我猜测你用的芯片不是天利就是天微
-----------------------------------------------------------------------
呵呵,我不是做LED显示的,这段时间一直在学VHDL,正好有人问我能不能用VHDL写出这个芯片,一时手痒,就尝试了一下。
不过这个芯片感觉还不错,过段时间没准会尝试一下。 回复【3楼】h2feo4 无机酸
-----------------------------------------------------------------------
谢谢 h2feo4 无机酸 的点拨,我尝试一下。
页:
[1]