求大神帮我仿真下这个fpga程序,看错误在哪,谢谢,小弟QQ978809991
libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_...
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity counter is
port(clk : in std_logic;
load : in std_logic;
buffertime : in std_logic_vector(23 downto 0);
time : out std_logic_vector(23 downto 0));
end counter;
Architecture rt of counter is
Signal clk1s :std_logic;
Signal time_sig :std_logic_vector(23 downto 0);
component divider_1m
port(
clk : in std_logic;
clk1s: out std_logic);
end component;
Begin
divider1M:divider_1m
Port MAP (clk=>clk,
clk1s=>clk1s);
Process (clk1s,clk)
Begin
If(clk'event and clk='1')then
If(load='1')then
time_sig<=buffertime;
Else
If (clk1s='1')then
If(time_sig(3 downto 0) ="1001")then
time_sig(3 downto 0)<="0000";
if(time_sig(7 downto 4) ="0101")then
time_sig(7 downto 4)<="0000";
if(time_sig(11 downto 8) ="1001")then
time_sig(11 downto 8)<="0000";
if(time_sig(15 downto 12) ="0101")then
time_sig(15 downto 12)<="0000";
if(time_sig(23 downto 16) ="001001")then
time_sig(23 downto 16) <="010000";
elsif(time_sig(23 downto 16)="011001"then
time_sig(23 downto 16) <="100000";
elsif(time_sig(23 downto 16) ="100011")then
time_sig(23 downto 16) <="000000";
else
time_sig(23 downto 16) <=time_sig(23 downto 16)+1;
end if;
else
time_sig(15 downto 12) <=time_sig(15 downto 12)+1;
end if;
else
time_sig(11 downto 8) <=time_sig(11 downto 8)+1;
end if;
else
time_sig(7 downto 4) <=time_sig(7 downto 4)+1;
end if;
else
time_sig(3 downto 0) <=time_sig(3 downto 0)+1;
end if;
end if;
end if;
end if;
end process;
time <= time_sig;
end rt; 展开
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity counter is
port(clk : in std_logic;
load : in std_logic;
buffertime : in std_logic_vector(23 downto 0);
time : out std_logic_vector(23 downto 0));
end counter;
Architecture rt of counter is
Signal clk1s :std_logic;
Signal time_sig :std_logic_vector(23 downto 0);
component divider_1m
port(
clk : in std_logic;
clk1s: out std_logic);
end component;
Begin
divider1M:divider_1m
Port MAP (clk=>clk,
clk1s=>clk1s);
Process (clk1s,clk)
Begin
If(clk'event and clk='1')then
If(load='1')then
time_sig<=buffertime;
Else
If (clk1s='1')then
If(time_sig(3 downto 0) ="1001")then
time_sig(3 downto 0)<="0000";
if(time_sig(7 downto 4) ="0101")then
time_sig(7 downto 4)<="0000";
if(time_sig(11 downto 8) ="1001")then
time_sig(11 downto 8)<="0000";
if(time_sig(15 downto 12) ="0101")then
time_sig(15 downto 12)<="0000";
if(time_sig(23 downto 16) ="001001")then
time_sig(23 downto 16) <="010000";
elsif(time_sig(23 downto 16)="011001"then
time_sig(23 downto 16) <="100000";
elsif(time_sig(23 downto 16) ="100011")then
time_sig(23 downto 16) <="000000";
else
time_sig(23 downto 16) <=time_sig(23 downto 16)+1;
end if;
else
time_sig(15 downto 12) <=time_sig(15 downto 12)+1;
end if;
else
time_sig(11 downto 8) <=time_sig(11 downto 8)+1;
end if;
else
time_sig(7 downto 4) <=time_sig(7 downto 4)+1;
end if;
else
time_sig(3 downto 0) <=time_sig(3 downto 0)+1;
end if;
end if;
end if;
end if;
end process;
time <= time_sig;
end rt; 展开
1个回答
展开全部
我来百度潜水很久了,很久不想说什么了,看到了这样的代码,我实在是忍不住吐槽了。
有两点:1.对器件内部逻辑的运算时序不太了解 2对于编程还不太规范
1.process中的语句是顺序执行的,所以,不要把这么庞大的语句写在一个上升沿的判断里,一个时钟(50M晶振)才20ns,这样多的程序是不会在20ns内运行完的,特别是信号的赋值,一个信号从高电平跳变到低电平是需要时间的,而程序中的信号赋值语句非常的多,你的程序还没运行完就会等来新的上升沿,进程又重新运行。所以你永远等不到end if;的那一刻。
2.if语句嵌套不要超过2层,这是铁律!
解决方式:
把这一大段拆开,我大致猜了下,楼主的功能是要计数,低位进位
这样的程序很多,可以去网上搜一下,功能要一点点实现,不要想一口气解决问题,逻辑器件和智能器件是不一样的。
有两点:1.对器件内部逻辑的运算时序不太了解 2对于编程还不太规范
1.process中的语句是顺序执行的,所以,不要把这么庞大的语句写在一个上升沿的判断里,一个时钟(50M晶振)才20ns,这样多的程序是不会在20ns内运行完的,特别是信号的赋值,一个信号从高电平跳变到低电平是需要时间的,而程序中的信号赋值语句非常的多,你的程序还没运行完就会等来新的上升沿,进程又重新运行。所以你永远等不到end if;的那一刻。
2.if语句嵌套不要超过2层,这是铁律!
解决方式:
把这一大段拆开,我大致猜了下,楼主的功能是要计数,低位进位
这样的程序很多,可以去网上搜一下,功能要一点点实现,不要想一口气解决问题,逻辑器件和智能器件是不一样的。
追问
是的 这是我的论文,主要是计时用的 ,同样也是计数,我已经找到问题所在了,谢谢你。我的程序有一个buffertime没有定义,
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询