微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > FPGA访问SRAM,求助!急!

FPGA访问SRAM,求助!急!

时间:10-02 整理:3721RD 点击:
[这个贴子最后由crazy2002在 2006/04/16 01:06pm 第 2 次编辑]
小妹用FPGA访问外部sram(EDI8L32128V),用状态机实现,先向地址0x1里写了一个数2,再向地址0x2里写了一个数4,然后读地址0x1的数,始终不对!
程序如下,请各位指教:如有更好的方法请赐教!
library ieee;
use ieee.std_logic_1164.all;
entity sram is
port (
        clk,rst : in std_logic;
        saddr : out std_logic_vector(16 downto 0);
        dataio: out std_logic_vector(15 downto 0);
        sram_wrenut std_logic;--sram写使能,低有效
        sram_rdenut std_logic;--sram输出使能,低有效
        sdata : inout std_logic_vector(15 downto 0)
        )
end sram ;
architecture behavor of i486_bus is
signal state,next_state :std_logic_vector(1 downto 0);
begin
  process(clk)
  begin
    if rst='1'then
        state<="00";
    elsif clk'event and clk='1'then
        state<=next_state;
    end if;
end process;
process(state)
begin
  case state is
        when "00"=>
                sram_wren<='0';--写数据
                sram_rden<='1';
                saddr<="00000000000000001";--地址0x1
                sdata<="0000000000000100";--写入数据 4
                next_state<="01";
        when "01"=>
                sram_wren<='0';--写数据
                sram_rden<='1';
                saddr<="00000000000000010";--地址0x2
                sdata<="0000000000000010";----数据2
                next_state<="10";
        when "10"=>
                sram_wren<='1';--读数据
                sram_rden<='0';
                saddr<="00000000000000010";--地址0x2
                dataio<=sdata;--数据输出到io口上,测量该io口数据不对
                next_state<="10";--循环读该地址
        end case;
end process;

FPGA访问SRAM,求助!急!
怎么没人理我啊?有哪位大哥大姐做过这样的板子,请提供一个类似的VHDL程序,小妹将不胜感激!我的E:MAIL:song_0119@hotmail.com

时序逻辑 组合逻辑混起用 不好 第一个过程 clk 要指定哪个边沿触发 第二个过程建议state条件也换成clk 时序控制,组合逻辑也可以 就要设计更仔细些

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top