不解:仿真波形中莫明其妙的尖峰怎么回事?

[复制链接]
3872|8
 楼主| shiqianwei 发表于 2007-11-5 22:19 | 显示全部楼层 |阅读模式
一个用CASE语句描述的4选1选择器,用一些型号的芯片仿真会有莫明其妙的尖峰出现,而有一些芯片又不会出这种现象。如下:<br /><br />LIBRARY&nbsp;IEEE;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />USE&nbsp;IEEE.STD_LOGIC_1164.ALL;<br />ENTITY&nbsp;&nbsp;mux41b&nbsp;IS<br />&nbsp;&nbsp;&nbsp;&nbsp;PORT(a,b,c,d:&nbsp;IN&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s0,s1:&nbsp;IN&nbsp;STD_LOGIC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y:&nbsp;OUT&nbsp;STD_LOGIC&nbsp;);<br />END&nbsp;ENTITY&nbsp;&nbsp;&nbsp;&nbsp;mux41b;&nbsp;&nbsp;&nbsp;&nbsp;<br />ARCHITECTURE&nbsp;bhv&nbsp;OF&nbsp;mux41b&nbsp;IS&nbsp;--4选一选择器的CASE语句表达方式描述<br />&nbsp;&nbsp;&nbsp;&nbsp;SIGNAL&nbsp;s1s0&nbsp;:&nbsp;STD_LOGIC_VECTOR(1&nbsp;DOWNTO&nbsp;0);<br />BEGIN<br />&nbsp;&nbsp;&nbsp;&nbsp;s1s0&nbsp;&lt=&nbsp;s1&nbsp;&&nbsp;s0;<br />&nbsp;&nbsp;&nbsp;&nbsp;PROCESS&nbsp;(a,b,c,d,s1s0)<br />&nbsp;&nbsp;&nbsp;&nbsp;BEGIN&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CASE&nbsp;s1s0&nbsp;IS<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;00&quot;&nbsp;=&gt&nbsp;y&lt=a&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;01&quot;&nbsp;=&gt&nbsp;y&lt=b&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;10&quot;&nbsp;=&gt&nbsp;y&lt=c&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;&quot;11&quot;&nbsp;=&gt&nbsp;y&lt=d&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;OTHERS&nbsp;=&gt&nbsp;NULL&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;CASE;<br />&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;PROCESS;<br />END&nbsp;ARCHITECTURE&nbsp;bhv;<br /><br />我的4路输入a,b,c,d都为0.用epm3064alc44时仿真波形如下:---见2楼<br /><br /><br />用ep20k30etc144时仿真波形:<br /><br />可以看到用ep20k30etc144时出现了尖峰,搞不明白了,怎么回事呢?<br />用其他一些型号的也会有这样现象,难道我的代码有问题吗?!
 楼主| shiqianwei 发表于 2007-11-5 22:20 | 显示全部楼层

epm3064alc44的波形:

---<br />
 楼主| shiqianwei 发表于 2007-11-8 21:55 | 显示全部楼层

没有人理解我提的问题么

  
amtek 发表于 2007-11-9 00:01 | 显示全部楼层

我理解你的问题,但我无法让你理解

<br />&nbsp;尖峰是永远存在的,如果有时仿真没出来,只能说明仿真不准,而硬件都是有的,要在硬件中减少尖峰,需要功底。
 楼主| shiqianwei 发表于 2007-11-10 12:28 | 显示全部楼层

确实无法理解

看来CPLD/FPGA也不是那么完美滴咯
xjg1111 发表于 2007-11-14 23:09 | 显示全部楼层

尖峰是软件考虑实际情况算出来的

你这肯定是后仿真,前仿真不会出这种情况。因为每个器件的延迟不一样,所以出现尖峰的情况也不一样。前仿真是理想值,不会出现尖峰。<br />因为每个门都有延迟,软件会根据这一延迟算出可能出现的最差情况。一般仿真中出的尖峰按你的时序不会影响你的结果就没有问题。而且按经验来看,仿真要比真实的情况要差一些,仿真没有问题,真实的跑起来也不会有问题(但不绝对~~)
young_Zyj 发表于 2007-11-20 13:59 | 显示全部楼层

电路设计中存在竞争冒险

  
11月的雨 发表于 2007-12-8 00:07 | 显示全部楼层

回复

养成一个好习惯&nbsp;输出带锁寸器输出&nbsp;对驱除毛刺有好处
jzt369 发表于 2007-12-8 17:10 | 显示全部楼层

做同步逻辑,尽量少用组合逻辑

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

401

帖子

0

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