逻辑优化 (NOT Gate Push-Back)
上一篇 /
下一篇 2007-12-16 02:43:20
/ 个人分类:软件使用
请问下面程序中为何异步复位值为“111”时
端口输出k1的数值是正确的,而内部信号k的数值与k1的值刚好相反
具体如下:
仿真时异步复位值为 k<="111";时端口输出k1的数值是从“111”-“000”-“001”-“010”-“011”- -
依次计数输出。而内部信号k的数值与k1的值刚好相反。其数值是从“000”-“111”-“110”-“101”-“100”-
-,也就是说k中相应位为1时,k1中与k 同的位为0,k中相应位为0时,k1中与k 同的位为1。
仿真时异步复位值为 k不是"111"; k与k1的数值是相同的。是从“111”-“000”-“001”-“010”-“011”- - 依次计数输出。
lib
rary ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity clk_d is
port ( en_k,clk:in std_logic;
k1: out std_logic_vector(2 downto 0)
);
end clk_d;
architecture behav of clk_d is
signal k:std_logic_vector(2 downto 0);
begin
process(en_k,k,clk)
begin
if en_k='0' then
k<="111";
elsif clk'event and clk='1' then
k<=k+1;
end if;
end process;
k1<=k;
end behav;
解决方式:
这是QII综合时的优化(非门后移)的结果,不影响结果的。可以通过如下方法让这一功能失效:
Assignments>setting>Analysis & Synthesis Setting>more setting>下将
NOT Gate Push-Back项置为OFF。或者 另外一个办法就是加个PIN直接拉出。
导入论坛
收藏
分享给好友
推荐到圈子
管理
举报
TAG:
设置
push
back
怪