wdynh 发表于 2016-12-15 11:53:47

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

本帖最后由 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 temp;
。。。

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

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

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

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

panjun10 发表于 2016-12-15 12:40:50

加个校验码的不?

chenchaoting 发表于 2016-12-15 12:53:39

状态机啊,超时超过一个串行钟没有信号就清除重新来

Nuker 发表于 2016-12-15 13:58:46

nSync为低的时候对clk计数,nSync由低变高时判断计数值是否为64,同时对计数值清零

wdynh 发表于 2016-12-15 18:45:51

Nuker 发表于 2016-12-15 13:58
nSync为低的时候对clk计数,nSync由低变高时判断计数值是否为64,同时对计数值清零 ...

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

NJ8888 发表于 2016-12-15 20:11:14

逻辑电路哪能想少就少时钟,特别是移位时钟,时钟不可靠还设计啥同步电路呐

ackyee 发表于 2016-12-15 22:48:19

你的clk到底是自己的时钟还是   还是外部提供的
如果是自己系统的时钟,少机个时钟那没得救
外部时钟的话,你再拿系统时钟计算数字就好了

还有我觉得你写成状态机会好一些
页: [1]
查看完整版本: 求助:怎样用Verilog实现有限时钟个数的串并转换