各位高手:
我把在ModelSim中编译完成的VHDL码放到Synplify中进行综合, n多 warning.
其中:
很难理解. 我在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还要具体分析。
谢谢版主回复, 就是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来打,特殊情况可以使用。
这个Latch用于PLL中的数字鉴相器. 整个环路表现与此部分的Timing有很大关系.
第一种写法构成的PLL表现不错, 所以我不太想改. 不过看来不改也不成, r, s
跟本没联进去,q, iq 电平固定, 这个Latch根本动不起来.
非常感谢你的回复.
"跟本没联进去,q, iq 电平固定, 这个Latch根本动不起来. "
lz的电平没有动起来是指触发条件来了没有动吗?那lz可以根据这个找找触发条件有没有满足要求。
锁存器只会动一次,除非复位。
关于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信号.
另外, 用第二段码表示的锁存器做成的鉴相器仿真结果不好, 指示相位超前与滞后的信号有很多
毛刺. 正设法解决.
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |