产生毛刺怎么办

[复制链接]
 楼主| aikimi7 发表于 2012-3-9 10:03 | 显示全部楼层 |阅读模式
本帖最后由 aikimi7 于 2012-3-9 10:05 编辑

之前做的网络可以时序仿真,但出现有规律的毛刺。输出加寄存器虽然去除了毛刺,但输出延迟了一个时钟,我共用了一个时钟信号。是不是要加一个和原来电路不同的时钟呢?或者代码中有问题?是不是代码的问题。

代码如下:
module pcnn(clk,rst,S,Y,KF,KE,VE,F,E);
input clk,rst;
input[15:0] S;
input[15:0] KF;
input[15:0] KE;
input[15:0] VE;
output[15:0] F;
output[15:0] E;

output Y;

reg[15:0] F;
reg[15:0] E;
reg[15:0] F_reg;
reg[15:0] E_reg;

reg[31:0] MUL_F;
reg[31:0] MUL_E;

///////////////zuhe

assign Y = (F>E_reg)? 1'b1 : 1'b0;//E_reg:number of the last time,not E.



always@(KF,F_reg,S)
begin
        MUL_F = KF * F_reg;
        F = MUL_F[23:8] + S;
end

always@(Y,VE,KE,E_reg)
begin
        MUL_E = KE * E_reg;
        if(Y)
                //E=VE + MUL_E[23:8];
                E=VE;
        else
                E=MUL_E[23:8];
end


always@(posedge clk)                //shixu
begin
        if(!rst)
        begin
                F_reg <= 0;
                E_reg <= 0;
        end
        else
        begin
                F_reg <= F;
                E_reg <= E;
        end
end
endmodule


RTL视图

本帖子中包含更多资源

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

×
Backkom80 发表于 2012-3-9 10:12 | 显示全部楼层
看了下,输出端口有Y和E和F,这个仿真图应该是时序仿真图吧,如果是时序仿真图,这个是正常的。

要保证在时钟沿的窗口内数据是稳定。输出的数据可以用时钟打一拍,一个时钟的延时在最初的时序设计上考虑的。:lol
GoldSunMonkey 发表于 2012-3-9 10:19 | 显示全部楼层
这个是正常的,时序仿真的结果就是这样的。

实际电路里面也是如此的情况。
litgb 发表于 2012-3-9 18:40 | 显示全部楼层
仿真的和实际电路的可能有点差别, 啦l
GoldSunMonkey 发表于 2012-3-9 21:02 | 显示全部楼层
仿真的和实际电路的可能有点差别, 啦l
litgb 发表于 2012-3-9 18:40
兄弟,你这个就错了。

这个差别有,但是形状也同后仿真类似。
Backkom80 发表于 2012-3-9 21:29 | 显示全部楼层
功能仿真,后仿真可能有差别,这是时序仿真,包含了器件和线的延时,基本和实际电路运行情况一致。
GoldSunMonkey 发表于 2012-3-9 21:54 | 显示全部楼层
:)砖家啊。哈哈
Backkom80 发表于 2012-3-9 23:32 | 显示全部楼层
:)砖家啊。哈哈
GoldSunMonkey 发表于 2012-3-9 21:54


嘻嘻,学习学习
wangjun403 发表于 2012-3-10 10:50 | 显示全部楼层
可以电路被综合出了组合逻辑

被延迟的也应该是第一次输出(latency),后面的该没有影响
GoldSunMonkey 发表于 2012-3-10 14:56 | 显示全部楼层
:)嘿嘿:)
aiaiwo 发表于 2012-3-10 21:53 | 显示全部楼层
都是专家啊
lwq030736 发表于 2012-3-11 11:28 | 显示全部楼层
这不是毛刺,只是你在仿真时,软件是把你的顶层实体输入输出口当成实际的IO管脚,
即使这只是你的一个模块
这时候每一位的数据到达管脚的时间都是不一样的,根据实际电路有先后顺序
你把数据展开就可以看到了。
如果你想要看起来没什么毛刺,数据几乎同时到达的话,你可以约束一下TCO
 楼主| aikimi7 发表于 2012-3-12 11:20 | 显示全部楼层
2# Backkom80 时钟打一拍,那这个时钟怎么选呢?是说加一个寄存器吗?时钟不同的吗?
 楼主| aikimi7 发表于 2012-3-12 11:26 | 显示全部楼层
这不是毛刺,只是你在仿真时,软件是把你的顶层实体输入输出口当成实际的IO管脚,
即使这只是你的一个模块
这时候每一位的数据到达管脚的时间都是不一样的,根据实际电路有先后顺序
你把数据展开就可以看到了。
如果 ...
lwq030736 发表于 2012-3-11 11:28

TCO约束如何确定呢?
GoldSunMonkey 发表于 2012-3-12 11:40 | 显示全部楼层
你这是Altera的吧?
参考他的文档吧。
GoldSunMonkey 发表于 2012-3-12 13:29 | 显示全部楼层
liwsx 发表于 2012-3-28 18:12 | 显示全部楼层
在硬件上,
应该是加滤波
ladygaga 发表于 2012-3-28 21:20 | 显示全部楼层
悄悄地说一声,这个版块专家老多了。昂。。
lwq030736 发表于 2012-3-29 15:44 | 显示全部楼层
14# aikimi7
TCO就是指从时钟上升沿开始,到数据到达管脚的时间
具体设多少跟你接的外设的TSU要求有关
你可以去看一下有关时序约束的文档
如果只是为了仿真看起来好看的话,你就随便约个5ns或者7ns都行
hawksabre 发表于 2012-9-4 19:14 | 显示全部楼层
从硬件角度考虑   应该是滤波做的不好   信号不干净    从软件来考虑  可能是时序不一致   导致信号间在上升沿或下降沿出现不一致   检查一下定时器是否精确   以及PCB板布图时   信号走线是否等距
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

136

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部