求救:一个有关于EPM240读写SRAM并显示到LCD的程序问题
程序如下,为VHDL。编译没问题。烧录完成后,LCD显示器显示一片白。按复位按钮后,LCD为一片黑,然后不管怎么按都一直黑。但复位按钮按下去时,显示器显示没信号,放开按钮后,显示器显示VGA,说明有信号输出。不知道我的数据写进去SRAM里了没有?求救library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity VGA is
port(clk: in std_logic;
rst: in std_logic;
RAM_DATA : inout std_logic_vector(15 downto 0);
RAM_ADDR_OUT :out std_logic_vector(18 downto 0);
RAM_nWE_OUT : out std_logic;
RAM_nOE_OUT : out std_logic;
VGA_OUT :out std_logic_vector(15 downto 0);
VGA_HS : out std_logic;
VGA_VS : out std_logic;
LED_OUT: out std_logic
);
end VGA;
architecture behave of VGA is
signal vga_count_h :integer range 0 to 1056;
signal vga_count_v :integer range 0 to 628;
signal ram_addr_rd :std_logic_vector(18 downto 0);
signal ram_addr_wr :std_logic_vector(18 downto 0);
signal ram_addr_en :std_logic;
--signal ram_data_rd :std_logic_vector(15 downto 0);
signal ram_data_wr :std_logic_vector(15 downto 0);
signal ram_data_dr :std_logic;
signal RW_en :std_logic;
signal clk_en :std_logic;
begin
----------------------------------------------------------------
-----------------RAM_WRITE-----------------------------------
----------------------------------------------------------------
RAM_WRITE_PROCESS:process(clk,rst)
begin
if(rst='1')then
ram_addr_wr <= "0000000000000000000";
ram_data_wr <= "0000000000000000";
RAM_nWE_OUT <= '0';
RAM_nOE_OUT <= '1';
RW_en <= '0';
else
if(clk'event and clk='1')then
if(RW_en='0')then
ram_addr_wr <= ram_addr_wr + '1';
ram_data_wr <= ram_data_wr + '1';
if(ram_addr_wr="0100000000000000000")then
ram_data_dr <= '1';
ram_addr_en <= '1';
RAM_nWE_OUT <= '1';
RAM_nWE_OUT <= '1';
RAM_nOE_OUT <= '0';
RW_en <= '1';
else
ram_data_dr <= '0';
ram_addr_en <= '0';
RAM_nWE_OUT <= '0';
end if;
else
ram_addr_wr <= "0000000000000000000";
ram_data_wr <= "0000000000011111";
end if;
end if;
end if;
end process RAM_WRITE_PROCESS;
----------------------------------------------------------------
-----------------RAM_ADDR_OUT-----------------------------------
----------------------------------------------------------------
RAM_ADDR_OUT <= ram_addr_wr when ram_addr_en='1'
else ram_addr_rd;
----------------------------------------------------------------
----------------RAM_OUT_TEST------------------------------------
----------------------------------------------------------------
LED_OUT <= '1' when ram_addr_en='1'
else '0';
----------------------------------------------------------------
-----------------RAM_DATA_OUT-----------------------------------
----------------------------------------------------------------
RAM_DATA_DIR_PROCESS:process(ram_data_dr,ram_data_wr)
begin
if(ram_data_dr='1')then
RAM_DATA <= ram_data_wr;
else
RAM_DATA <= "ZZZZZZZZZZZZZZZZ";
end if;
end process RAM_DATA_DIR_PROCESS;
------------------------------------------------------
-------------------VGA_display------------------------
------------------------------------------------------
vga_count_h_PROCESS:process(clk,RW_en)
begin
if(RW_en='1')then
vga_count_h <= 0;
else
if(clk'event and clk='1')then
if(vga_count_h=1056)then
vga_count_h <= 0;
else
vga_count_h <= vga_count_h + 1;
end if;
end if;
end if;
end process vga_count_h_PROCESS;
vga_count_v_PROCESS:process(clk,RW_en)
begin
if(RW_en='1')then
vga_count_v <= 0;
else
if(clk'event and clk='1')then
if(vga_count_v=628)then
vga_count_v <= 0;
elsif(vga_count_h=1056)then
vga_count_v <= vga_count_v + 1;
end if;
end if;
end if;
end process vga_count_v_PROCESS;
H_V_PROCESS:process(clk,RW_en)
begin
if(RW_en='1')then
ram_addr_rd <= "0000000000000000000";
else
if(clk'event and clk='0')then
if(vga_count_h=0)then
VGA_HS <= '0';
end if;
if(vga_count_v=4)then
VGA_VS <= '1';
end if;
if(vga_count_h=128)then
VGA_HS <= '1';
end if;
if(vga_count_v=0)then
VGA_VS <= '0';
end if;
if((vga_count_v>27)and(vga_count_v<627))then
if((vga_count_h>216)and(vga_count_h<1017))then
VGA_OUT <= RAM_DATA;
ram_addr_rd <= ram_addr_rd + '1';
else
VGA_OUT <= "0000000000000000";
end if;
else
ram_addr_rd <= "0000000000000000000";
end if;
end if;
end if;
end process H_V_PROCESS;
------------------------------------------------------
-------------------VGA_display------------------------
------------------------------------------------------
end behave;
点击此处下载 ourdev_632059O8IJVD.rar(文件大小:977字节) (原文件名:VGA.rar)
页:
[1]