打印

产生毛刺怎么办

[复制链接]
4371|35
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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视图

2012-03-07_111944.jpg (98.6 KB )

2012-03-07_111944.jpg

2012-03-07_110643.jpg (71.98 KB )

2012-03-07_110643.jpg

相关帖子

沙发
Backkom80| | 2012-3-9 10:12 | 只看该作者
看了下,输出端口有Y和E和F,这个仿真图应该是时序仿真图吧,如果是时序仿真图,这个是正常的。

要保证在时钟沿的窗口内数据是稳定。输出的数据可以用时钟打一拍,一个时钟的延时在最初的时序设计上考虑的。:lol

使用特权

评论回复
板凳
GoldSunMonkey| | 2012-3-9 10:19 | 只看该作者
这个是正常的,时序仿真的结果就是这样的。

实际电路里面也是如此的情况。

使用特权

评论回复
地板
litgb| | 2012-3-9 18:40 | 只看该作者
仿真的和实际电路的可能有点差别, 啦l

使用特权

评论回复
5
GoldSunMonkey| | 2012-3-9 21:02 | 只看该作者
仿真的和实际电路的可能有点差别, 啦l
litgb 发表于 2012-3-9 18:40
兄弟,你这个就错了。

这个差别有,但是形状也同后仿真类似。

使用特权

评论回复
6
Backkom80| | 2012-3-9 21:29 | 只看该作者
功能仿真,后仿真可能有差别,这是时序仿真,包含了器件和线的延时,基本和实际电路运行情况一致。

使用特权

评论回复
7
GoldSunMonkey| | 2012-3-9 21:54 | 只看该作者
:)砖家啊。哈哈

使用特权

评论回复
8
Backkom80| | 2012-3-9 23:32 | 只看该作者
:)砖家啊。哈哈
GoldSunMonkey 发表于 2012-3-9 21:54


嘻嘻,学习学习

使用特权

评论回复
9
wangjun403| | 2012-3-10 10:50 | 只看该作者
可以电路被综合出了组合逻辑

被延迟的也应该是第一次输出(latency),后面的该没有影响

使用特权

评论回复
10
GoldSunMonkey| | 2012-3-10 14:56 | 只看该作者
:)嘿嘿:)

使用特权

评论回复
11
aiaiwo| | 2012-3-10 21:53 | 只看该作者
都是专家啊

使用特权

评论回复
12
lwq030736| | 2012-3-11 11:28 | 只看该作者
这不是毛刺,只是你在仿真时,软件是把你的顶层实体输入输出口当成实际的IO管脚,
即使这只是你的一个模块
这时候每一位的数据到达管脚的时间都是不一样的,根据实际电路有先后顺序
你把数据展开就可以看到了。
如果你想要看起来没什么毛刺,数据几乎同时到达的话,你可以约束一下TCO

使用特权

评论回复
13
aikimi7|  楼主 | 2012-3-12 11:20 | 只看该作者
2# Backkom80 时钟打一拍,那这个时钟怎么选呢?是说加一个寄存器吗?时钟不同的吗?

使用特权

评论回复
14
aikimi7|  楼主 | 2012-3-12 11:26 | 只看该作者
这不是毛刺,只是你在仿真时,软件是把你的顶层实体输入输出口当成实际的IO管脚,
即使这只是你的一个模块
这时候每一位的数据到达管脚的时间都是不一样的,根据实际电路有先后顺序
你把数据展开就可以看到了。
如果 ...
lwq030736 发表于 2012-3-11 11:28

TCO约束如何确定呢?

使用特权

评论回复
15
GoldSunMonkey| | 2012-3-12 11:40 | 只看该作者
你这是Altera的吧?
参考他的文档吧。

使用特权

评论回复
16
GoldSunMonkey| | 2012-3-12 13:29 | 只看该作者
:)

使用特权

评论回复
17
liwsx| | 2012-3-28 18:12 | 只看该作者
在硬件上,
应该是加滤波

使用特权

评论回复
18
ladygaga| | 2012-3-28 21:20 | 只看该作者
悄悄地说一声,这个版块专家老多了。昂。。

使用特权

评论回复
19
lwq030736| | 2012-3-29 15:44 | 只看该作者
14# aikimi7
TCO就是指从时钟上升沿开始,到数据到达管脚的时间
具体设多少跟你接的外设的TSU要求有关
你可以去看一下有关时序约束的文档
如果只是为了仿真看起来好看的话,你就随便约个5ns或者7ns都行

使用特权

评论回复
20
hawksabre| | 2012-9-4 19:14 | 只看该作者
从硬件角度考虑   应该是滤波做的不好   信号不干净    从软件来考虑  可能是时序不一致   导致信号间在上升沿或下降沿出现不一致   检查一下定时器是否精确   以及PCB板布图时   信号走线是否等距

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

136

帖子

0

粉丝