首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

用Synplify进行综合产生的问题

用Synplify进行综合产生的问题

各位高手:

我把在ModelSim中编译完成的VHDL码放到Synplify中进行综合, n warning.

其中:

  1. r, s的输入未连接; (CL159)
  2. iq 恒为1; i恒为0.(CL189)

很难理解. 我在ModelSim中仿真波型都是对的.

library ieee;

use ieee.std_logic_1166.all;

entity rs_latch is

Port ( r : in std_logic;

s : in std_logic;

q : out std_logic;

iq : out std_logic);

end rs_latch;

architecture bhv_rslatch of rs_latch is

begin

process(r, s)

begin

if r'event and r = '0' then

q <= '0';

iq <= '1';

elsif s'event and s = '0' then

q <= '1';

iq <= '0';

else

null;

end if;

end process;

end bhv_rslatch;

在此请教各位大侠, 我该如何修改我的代码?

谢谢先.

从楼主的表达看,lz是想写一个rs锁存器。

锁存器在vhdl语言中一般是没有else时容易产生。

比如在

begin

if r'event and r = '0' then

q <= '0';

iq <= '1';

elsif s'event and s = '0' then

q <= '1';

iq <= '0';

end if;

end process;

就应该可以产生一个latch。当然具体的warning还要具体分析。

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm

谢谢版主回复, 就是RS Latch.

好象是Synplify要求明确写出Clock和Reset信号才可以, 如果我加了cp 和rst, 那两个warning会消除(会有别的出现, 但似乎不影响功能) . 修改后的代码.

library ieee;
use ieee.std_logic_1164.all;

entity rs_latch is
port ( r : in std_logic;
s : in std_logic;
rst : in std_logic; --clock
cp : in std_logic;
q : out std_logic;
iq : out std_logic);
end rs_latch;

architecture bhv_latch of rs_latch is

begin
process(r, s, cp, rst)
begin -- level senstive
if rst = '0' then
q <= '0';
iq <= '1';
elsif rst= '1' then

if cp'event and cp = '1' and r = '0' then
q <= '0';
iq <= '1';
elsif cp'event and cp = '1' and s = '0' then
q <= '1';
iq <= '0';
end if;
end if;
end process;
end bhv_latch;

呵呵,latch一般在程序中是要避免的,因为它对一般毛刺信号没有滤除作用,建议使用同步信号。

当然latch的优点是速度快,不需要clock来打,特殊情况可以使用。

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm

这个Latch用于PLL中的数字鉴相器. 整个环路表现与此部分的Timing有很大关系.

第一种写法构成的PLL表现不错, 所以我不太想改. 不过看来不改也不成, r, s

跟本没联进去,q, iq 电平固定, 这个Latch根本动不起来.

非常感谢你的回复.

"跟本没联进去,q, iq 电平固定, 这个Latch根本动不起来. "

lz的电平没有动起来是指触发条件来了没有动吗?那lz可以根据这个找找触发条件有没有满足要求。

锁存器只会动一次,除非复位。

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm

关于warning CL159 "unused input"

这是第一段码编译时Synplify的complain:

CL159 :"A_RS.vhd": Input r is unused

CL159 :"A_RS.vhd": Input s is unused

Synplify 给出的解释比较简单:

This warning appears when inputs in the top level of the design are declared, but not read from (input function) a corresponding module description

而第二段码编译时则没有此问题. 二者的区别就是在第二段内有rst 和 cp信号.

另外, 用第二段码表示的锁存器做成的鉴相器仿真结果不好, 指示相位超前与滞后的信号有很多

毛刺. 正设法解决.

呵呵,建议lz从毛刺产生的原因出发来分析,当然使用同步信号可以滤除毛刺。
这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm
返回列表