微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 一道笔试题

一道笔试题

时间:10-02 整理:3721RD 点击:
assign c=!sel&A+sel&B;(1)当A,B同时为0,sel从0变为1的时候,c会出现毛刺吗?如果出现,从逻辑上怎么去除毛刺?
(2)当A,B同时为1,sel从0变为1的时候,c会出现毛刺吗?如果出现,从逻辑上怎么去除毛刺?
求解答,,,

assign c=!sel&A+sel&B; 是不是为 assign c=!(sel&A+sel&B); 少了括号。
物理上是无法保证AB 同时为0的。 采用一种glitch free的电路可解决 , 下面有链接http://www.eecourse.com/group/8/thread/179

http://wenku.baidu.com/link?url= ... OH9D6HnZjpdAAI4yrIW

第(1)不会出毛刺
第二种业不会出现毛刺

1) c =0, no glich.
2) c = sel+!sel, no glich

(1)不会。因为A,B屏蔽了SEL的作用。
(2)可能会,看综合和布局布线后的结果!
你可以把电路画出来,然后给路径延迟可以看出!
SEL为0->1时,当T(sel->!sel->!sel&A)<T(sel->sel&B)时最后一级或门会有毛刺!
当然实际综合一般不会出现上述的情况!但你只是问会不会!
解决的话:从写法上写成二选一(综合),或者给时序约束!

我觉得都不会吧

1. 不会。
2. 有可能会。这个逻辑化简一下是根据sel 的值分别把A或者B 赋给C。修改逻辑把sel 作为MUX 的选择信号来切换A 和B 应该可以解决。assign c = sel ? b : a 这样?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top