请注意,这是一个学习问题。
我必须用vhdl描述一个简单的d-闩锁,然后合成它.问题是它是一个“一元”的d锁存器,它的单个输入直接映射到它的输出(Q和nQ)。你可以想象它是一个经典的异步锁存器,其中clk信号总是很高.这在逻辑中是无用的元素,在大多数情况下,xilinx合成器会给出一个空的技术模式。但是保留这个元素的原因是,例如,创建硬件“水印”,它存在于模式中,但不影响其逻辑。
我想出了以下代码:
entity dLatch is
port(
d: in std_logic;
q: out std_logic);
end dLatch;
architecture dLatch_beh of dLatch is
signal o: std_logic;
begin
latch: process(d)
begin
if d = '1' then
o <= '1';
elsif d = '0' then
o <= '0';
end if;
end process;
q <= o;
end;此代码生成以下技术架构
链接
但是,当我尝试添加nQ out端口时,我会获得锁存的复制。
entity dLatch is
port(
d: in std_logic;
q, nq: out std_logic);
end dLatch;
architecture dLatch_beh of dLatch is
signal o: std_logic;
begin
latch: process(d)
begin
if d = '1' then
o <= '1';
elsif d = '0' then
o <= '0';
end if;
end process;
q <= o;
nq <= not o;
end;技术模式:链接
我不明白,为什么这里有两个完全相等的闩锁。我只想再加一个“不”门。因此,我的问题是如何避免锁存的重复,或者其他方法来解决这个问题。我使用14.6进行综合。
解决方案是将合成器的标志-register_duplication设置为false。
发布于 2013-11-07 22:41:14
解决方案是将合成器的标志-register_duplication设置为false。
发布于 2013-11-07 13:23:29
你根本就没有门闩。您正在查看Technology视图,因此它向您展示了它映射到的Xilinx组件。首先,您应该查看RTL视图。
其次,闩锁是不好的,因为你的教授可能让你意识到。他甚至在描述中说,视图将是空白的,因为工具不会为您生成锁存器。它们不存在于织物中。
https://stackoverflow.com/questions/19824334
复制相似问题