在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4312|回复: 5

求助[时钟上升沿采样不稳定问题]

[复制链接]
发表于 2007-11-22 09:11:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
用verilog写的很简单的一段代码,大概是:

reg[1:0]  q;//q是调用IP核fifo产生的数据,默认是reg型输出吧
assign data_out={{4{q[0]}},{4{q[1]}}};//data_out是输出

数据是上升沿进、上升沿采的,前仿和后仿都没问题,但是下到FPGA里后,有几个采样点数据是错的,而且基本上是相差4,不知道为什么。估计是采样时采到不稳定的点了,可能是data_out[2]里的延时比其它位的长造成的。总之不知原因,现在什么着急,忘高手帮忙解答一下,谢谢!
发表于 2007-11-22 10:43:39 | 显示全部楼层
用什么样的时钟去采什么样的数据啊,说得不是很清楚。
而且,不能从设计上保证数据稳定的时候采吗?
要是每次采都错的很规律的话是不是设计本身有bug啊?
 楼主| 发表于 2007-11-22 10:54:20 | 显示全部楼层
就是用全局输入时钟去采输出数据data_out

程序很简单,估计不是设计的问题吧
发表于 2007-11-22 16:47:59 | 显示全部楼层
你使用的是altera公司的IP吗?FIFO?你没有说清楚,我只能假设是了,在quartus里面的FIFO数据输出的时候,不仅仅是选择是否外加寄存器输出结构的选择,还包括你可以选择数据是不是预选输出到端口上的。
如果,你的输出已经保证在FIFO内部有效的话,你可以采用预取的模式读数,这样等你时钟到的时候数据已经提前准备好了。否则的话,在同一个时钟边沿的时候,数据来不及建立(建立时间不够)导致出错的概率还是很高的。

如果是其他的问题,欢迎你回来继续讨论。
发表于 2007-11-22 21:56:00 | 显示全部楼层
楼主能否把问题描述清楚一点?
具体过程 还有代码等
 楼主| 发表于 2007-11-23 10:42:46 | 显示全部楼层
谢谢大家!
实现的是QPSK星座映射,代码基本上如下:

input clk;
input rst_n;
input in_valid;
input in_data;
output out_valid;
output [7:0] out_data;
output clk_out;
reg  out_valid_temp;

reg   rdreq;
wire [1:0]  q;
wire [11:0]  wrusedw;

map_fifo MapFifo(
.data(in_data), //前端送入的2进制码流
.rdclk(clk),       //全局输入时钟
.rdreq(rdreq),  
.wrclk(clk),
.wrreq(in_valid),
.q(q),           //fifo输出数据
.wrusedw(wrusedw));
//中间还有段根据wrusedw来判断out_valid是0还是1的代码,在此省略

assign out_data={{4{q[0]}},{4{q[1]}}};//模块的输出数据
assign clk_out=clk;     //用clk_out作为采样时钟,主要是考虑到FPGA内部走线延时

用的是altera公司的IP(quartus ii 7.1版),输入输出管脚映射后接到逻辑分析仪进行观察,用clk_out作为采样时钟,采输出数据out_data,发现有些数和理论值不等,255错成251了,不知怎么回事?难道不能用clk_out作为采样时钟,或者有些地方设置不对?望达人指点!谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-17 01:33 , Processed in 0.021372 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表