FPGA功能仿真与时序仿真结果不同,这里有疑问。
现在在做一个课程设计,用VHDL语言产生74循环码。功能仿真的时候完全正确。但是在时序仿真的时候却出现了生成的循环码是错误的情况。以下是代码和截图。libraryieee...
现在在做一个课程设计,用VHDL语言产生74循环码。功能仿真的时候完全正确。但是在时序仿真的时候却出现了生成的循环码是错误的情况。以下是代码和截图。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity design is
port(clk1:in std_logic;
in1:in std_logic_vector(3 downto 0);
out1:out std_logic_vector(6 downto 0));
end design;
architecture RTL of design is
begin
P0:
process(clk1)
variable check:std_logic_vector(2 downto 0);
variable in_1:std_logic_vector(3 downto 0);
begin
if(clk1='0') then
in_1:=in1;
check(2):=(in_1(3) xor in_1(2) xor in_1(1));
check(1):=(in_1(2) xor in_1(1) xor in_1(0));
check(0):=(in_1(3) xor in_1(2) xor in_1(0));
out1<=in_1✓
end if;
end process P0;
end RTL;
第一第二张截图分别是功能仿真和时序仿真。4位为信息位,生成下面7位循环码,高四位原本应该和信息位相同。功能仿真中正常,但是时序仿真中无论信息位和监督位都是完全是混乱的。不知道为什么。分不多希望高手解答! 展开
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity design is
port(clk1:in std_logic;
in1:in std_logic_vector(3 downto 0);
out1:out std_logic_vector(6 downto 0));
end design;
architecture RTL of design is
begin
P0:
process(clk1)
variable check:std_logic_vector(2 downto 0);
variable in_1:std_logic_vector(3 downto 0);
begin
if(clk1='0') then
in_1:=in1;
check(2):=(in_1(3) xor in_1(2) xor in_1(1));
check(1):=(in_1(2) xor in_1(1) xor in_1(0));
check(0):=(in_1(3) xor in_1(2) xor in_1(0));
out1<=in_1✓
end if;
end process P0;
end RTL;
第一第二张截图分别是功能仿真和时序仿真。4位为信息位,生成下面7位循环码,高四位原本应该和信息位相同。功能仿真中正常,但是时序仿真中无论信息位和监督位都是完全是混乱的。不知道为什么。分不多希望高手解答! 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询