搜索
bottom↓
回复: 6

求助:怎样用Verilog实现有限时钟个数的串并转换

[复制链接]

出0入0汤圆

发表于 2016-12-15 11:53:47 | 显示全部楼层 |阅读模式
本帖最后由 wdynh 于 2016-12-15 11:55 编辑

求助:怎样用Verilog实现有限时钟个数的串并转换

问题描述:
1. 本质上是一个串并转换,3个信号输入:clk,data,nSync,clk:10Mhz,下降沿有效,nSync:低电平有效,data:有64bit。
2. 特殊的地方,用户要求输入时钟也只能发送64个,也就是在nSync有效(低电平)开始后才能发送时钟,发送64个周期后,nSync恢复成高电平。
3. 初步实现:用clk实现一个移位寄存器(64bit),在nSync上升沿时,做并行输出。
reg[63:0] temp;
。。。

always @(negedge clk)
begin
        if (sync_n)
        begin
                temp<=0; //清零
        end
        else
        begin
                temp <= {temp[62:0],din};
        end
       
end

always @(posedge sync_n)
begin
        //并行输出
end

4. 问题来了,这样实现在理论上可行,但假设在某次串行输入是少了1个或几个时钟,那么此后的移位寄存器中的值就会错乱,但客户不同意在nSync信号无效时发送一个时钟信号(用于移位寄存器temp清零)。

向各位高手求助,是否有有效的办法解决,谢谢!

出0入0汤圆

发表于 2016-12-15 12:40:50 来自手机 | 显示全部楼层
加个校验码的不?

出20入25汤圆

发表于 2016-12-15 12:53:39 | 显示全部楼层
状态机啊,超时超过一个串行钟没有信号就清除重新来

出0入17汤圆

发表于 2016-12-15 13:58:46 | 显示全部楼层
nSync为低的时候对clk计数,nSync由低变高时判断计数值是否为64,同时对计数值清零

出0入0汤圆

 楼主| 发表于 2016-12-15 18:45:51 | 显示全部楼层
Nuker 发表于 2016-12-15 13:58
nSync为低的时候对clk计数,nSync由低变高时判断计数值是否为64,同时对计数值清零 ...

此法不行,当出现少发时钟时,不会输出。

出0入0汤圆

发表于 2016-12-15 20:11:14 | 显示全部楼层
逻辑电路哪能想少就少时钟,特别是移位时钟,时钟不可靠还设计啥同步电路呐

出0入91汤圆

发表于 2016-12-15 22:48:19 | 显示全部楼层
你的clk到底是自己的时钟还是   还是外部提供的
如果是自己系统的时钟,少机个时钟那没得救
外部时钟的话,你再拿系统时钟计算数字就好了

还有我觉得你写成状态机会好一些
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 02:03

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表