[英]Why won't my VHDL run properly on my FPGA?
我正在编写一些VHDL,以便可以将字符LCD与我的FPGA接口。
内容如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity Parallel_Interface_Main is
port(
Clock : in std_logic;
Read_Write : out std_logic;
Register_Select: out std_logic;
Enable : out std_logic;
Busy : buffer std_logic;
Data_In : buffer std_logic_vector(7 downto 0);
Data_Line : buffer std_logic_vector(7 downto 0)
);
end Parallel_Interface_Main;
architecture ParallelBehaviour of Parallel_Interface_Main is
signal initialized: std_logic := '0';
begin
Enable <= Clock;
initialize: process(Clock)
begin
if(Clock'event and Clock = '1') then
Register_Select <= '0';
Read_Write <= '1';
Busy <= Data_Line(7);
if(Busy = '0' and initialized = '0') then
Register_Select <= '0';
Read_Write <= '0';
case Data_Line is
when "UUUUUUUU" =>
Data_Line <= "00111100";
when "00111100" =>
Data_Line <= "00001110";
when "00001110" =>
Data_Line <= "00000110";
when "00000110" =>
Data_Line <= "00000001";
initialized <= '1';
when others =>
Data_Line <= "ZZZZZZZZ";
end case;
end if;
if(Busy = '0' and initialized = '1') then
Register_Select <= '1';
Read_Write <= '0';
case Data_In is
when "UUUUUUUU" =>
Data_In <= "01010010";
when "01010001" =>
Data_In <= "01010000";
when others =>
Data_In <= "ZZZZZZZZ";
end case;
Data_Line <= Data_In;
end if;
end if;
end process;
end ParallelBehaviour;
基本上,LCD在处理一条指令时会发回一个忙标志,因此我编写了仅在忙标志为0时才执行的代码。由于我还没有将LCD连接到我的FPGA,因此需要测试此代码我将忙碌信号映射到板上的一个按钮,并将“数据线”的最低有效4位映射到几个LED上,这样我就可以看到该板是否正在循环浏览这8位代码。
现在,当我将编程文件上传到FPGA并按下映射到“ Busy”的按钮时,Data_Line位的状态没有变化。 这是VHDL错误的结果吗? 还是在FPGA时钟频率为125 MHz时将Busy映射到按钮的事实。 我对FPGA的经验不足,无法确切了解发生了什么。
我正在使用Altera Arria V GX FPGA。
这应该是一条评论,但我的代表不够高。
首先进行一些清理。
你真的是说缓冲吗? 您是否真的要制作Data_In和Data_Line双向端口? 如果您不想要双向/三态端口,请改用“ in”和“ out”,不要使用Z。
Read_Write只是忙碌的延迟版本,是故意的吗?
我对Data_in感到困惑。 我认为Data_in应该是输入,而Data_Line应该是输出。 或者它们是双向端口,为什么会有两个?
为您提供一个整洁的提示U将在综合中映射为“ 0”,我建议您不要将其用于可综合的模块
无论哪种方式,我都认为您无法查看芯片上的更改的问题可能是发生得很快。 您是否谴责过您(请查看防抖器)。 然后通过上升/下降沿检测将其反馈(将信号与自身的延迟版本进行比较)。 没有这些步骤,更改将很快发生,以供您查看。 使用该步骤,您应该能够在每次单独更改时按下按钮一次。
基本上我想说的是我需要更多信息(如果我有足够的代表,这将是评论)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.