问题描述
我正在尝试使用基于 GHDL 中的 NAND 逻辑的两个 CLK SR 触发器组件来实现一个 clk 主/从 JK 触发器。
我偶然发现了以下错误:
- 未解析信号的几个来源
- 细化过程中的错误
我知道,事实上,问题出在从锁存输入 SR(S
我尝试以多种方式初始化这些值,但未能通过该错误。
非常感谢您能提供的任何帮助。
JK FF 组件:
library ieee;
use ieee.std_logic_1164.all;
entity jkff_ms is
port
(
J,K,clk : in std_ulogic;
Q,nQ : inout std_ulogic
);
end entity;
architecture behave of jkff_ms is
component srff
port
(
S,R,clk : in std_ulogic;
Q,nQ : inout std_ulogic -- Q <= (S nand clk) nand nQ; / nQ <= (R nand clk) nand Q;
);
end component;
signal S,SRQ,SRnQ : std_ulogic;
signal t0,t1,t2,t3,t4 : std_ulogic;
begin
SRQ <= '1';
SRnQ <= '0';
t0 <= clk nand clk; -- NOT
t1 <= J nand nQ;
t2 <= t1 nand t1; -- NOT
t3 <= K nand Q;
t4 <= t3 nand t3; -- NOT
SR0: srff port map (t2,t4,clk,SRnQ);
SR1: srff port map (SRQ,SRnQ,t0,Q,nQ);
end architecture;
JK FF 测试台:
library ieee;
use ieee.std_logic_1164.all;
entity jkff_ms_tb is
end entity;
architecture rtl of jkff_ms_tb is
procedure clk_gen(signal clk0 : out std_ulogic; constant freq : real) is
constant T : time := 1000 ms/freq;
constant ht : time := T/2; -- High_Time
constant lt : time := T - ht; -- Low_Time
begin
assert (ht /= 0 fs) report "clk_plain: High_Time = 0; time resolution to large for freq" severity FAILURE;
loop
clk0 <= '1';
wait for ht;
clk0 <= '0';
wait for lt;
end loop;
end procedure;
component jkff_ms
port
(
J,nQ : inout std_ulogic
);
end component;
signal J,nQ : std_ulogic;
signal clk_100 : std_ulogic;
begin
clk_gen(clk_100,100.000e6); -- 100 MHz
assert FALSE report "Time resolution:" & time'image(time'succ(0 fs)) severity NOTE;
JK: jkff_ms port map (J,clk_100,nQ);
process
begin
J <= 'X';
K <= 'X';
wait for 10 ns;
J <= '0';
K <= '0';
wait for 10 ns;
J <= '0';
K <= '0';
wait for 10 ns;
J <= '1';
K <= '0';
wait for 10 ns;
J <= '0';
K <= '0';
wait for 10 ns;
J <= '0';
K <= '1';
wait for 10 ns;
J <= '1';
K <= '0';
wait for 10 ns;
J <= '0';
K <= '0';
wait for 10 ns;
J <= '0';
K <= '1';
wait for 10 ns;
assert false report "End of Test";
wait;
end process;
end architecture;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)