|
本帖最后由 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清零)。
向各位高手求助,是否有有效的办法解决,谢谢! |
|