可编程ASIC设计学习笔记-初步

本文详细介绍了VHDL在可编程ASIC设计中的关键点,包括设计方法、仿真过程和综合目的。强调了时钟沿描述限制、避免锁存、同步复位的重要性,以及仿真中的敏感信号设置和数据类型的选用。此外,还讨论了时钟分频的派生时钟与派生使能策略。
摘要由CSDN通过智能技术生成

一、设计的方法

1、所有除了01都加上“X

if( sel = ‘1’ ) then

    y <= ‘0’;

elsif( sel = ‘0’ ) then

    y <= ‘1’;

else

    y <= ‘X`;

end if;

2、所有无关分支加上无关态

0

善于使用无关态‘-’来填补分支,可以引导综合工具生成很优化的电路。

无关态‘-’在本质上时起了冗余电路删简的作用。

1Case sel is

when “000” =>  dout <= dina;

when “010” => dout <= dinb;

when others => dout <= ‘-’;

End case;

2)这样比这样好:

       Case sel is

           when “000” =>  dout <= dina;

           when “010” => dout <= dinb;

           when others => dout <= ‘0’;

End case;

3)对比:

      

3、仿真中的有些电路会出现X,此时不一定是代码错误。

常见的出现X的电路为,“组合回环”。这种组合回环,用VHDL的逻辑运算语句来描述,会无法通过综合;用port map语句来描述可通过综合。

RTL级别描述的组合回环很少使用(并且不推荐使用),一般仅用在一些特殊场合中(比如多时钟切换中的毛刺避免等),但是这在仿真时dout往往会出现不确定态,这是必须要注意的。

4、时钟沿描述限制

       一个进程中,只能有一个时钟沿判断语句。所以,不能在一个进程中判断两次或以上的时钟沿,甚至是判断同一个时钟的同一个沿也不行。

5、锁存

1)错误的锁存产生于组合进程中ifcase的分支不完整,意味着电路需要在某种电平状态下,让被赋值的信号保持原值,这只能使用锁存电路实现。

2)锁存和寄存区别:

锁存是电平起作用,寄存是时钟有效沿起作用。

3)在设计中,应该尽量避免使用锁存。因为锁存要占去大量的触发器资源,而且会对电路带来某种不稳定的隐患。

4)条件完整但仍然生成锁存器的描述:

Architecture behav of And2 is

Begin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值