1、请教:单片机读写 FPGA 内部构建的双口 RAM 单片机通过 P0,ALE,RD,WR 与 FPGA 连接(总线连接方式),我的具体做法是在 FPGA内开辟 n(0255)个寄存器,用其中一个寄存器端口映射双口 RAM 的 Qout7.0,在读写操作时单个地址没有问题,单当对 RAM 地址累计、写入或读出多个字节时出现问题。 请教有没人做过类似的项目,请赐教。谢谢! 2010-01-14,10:32:39 资料 邮件 回复 引用回复 编辑 删除 【1楼】 dzf2222 积分:6派别:等级:-来自:我的 VHDL 语句如下: library ieee; use ieee.std_logic_
2、1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity Registers is port( CSFPGA : in std_logic; Reset_N : in std_logic; Clk50M : in std_logic; ALE : in std_logic; RD : in std_logic; WR : in std_logic; DataToMCU : out std_logic_vector(7 downto 0); DataFromMCU : in std_logic_
3、vector(7 downto 0); MemRdClk : out std_logic; ErrData_R : in std_logic_vector(7 downto 0); -记录的出错点相对位置信息 ErrData_G : in std_logic_vector(7 downto 0); -记录的出错点相对位置信息 ErrData_B : in std_logic_vector(7 downto 0); -记录的出错点相对位置信息 -RdReq : out std_logic; -读记录出错点位置信息 RAM 请求,实际未使用 RdAddr : out std_logic_vecto
4、r(10 downto 0); -读地址 ED_StartOut : out std_logic; -从 MCU 来的检测命令 ED_ModeEn : in std_logic:=0; -1 检测模式 ED_ACK : in std_logic; -握手确认 FSM 已经收到检测命令 PixelCnt : out std_logic_vector(9 downto 0) -需要检测的段数量 ); end Registers; architecture syn of Registers is signal ALE_int : std_logic; signal RD_int : std_logi
5、c; signal WR_int : std_logic; signal CSFPGA_int : std_logic; -signal CMDREG: std_logic_vector(7 downto 0); -signal ED_STATE: std_logic_vector(7 downto 0); signal CONREG_R: std_logic_vector(7 downto 0); signal CONREG_G: std_logic_vector(7 downto 0); signal CONREG_B: std_logic_vector(7 downto 0); sign
6、al ADDRESSREG : std_logic_vector(7 downto 0); signal LocSetting : std_logic:=0; signal ED_Start: std_logic:=0; signal ED_ModeEn_int:std_logic; signal PixelCnt_int : std_logic_vector(9 downto 0); signal RdAddress_int : std_logic_vector(10 downto 0); -signal CS : std_logic; begin ED_StartOut IF(DataFr
7、omMCU=X“ED“) THEN ED_Start IF(DataFromMCU=X“00“) THEN ED_Start IF(LocSetting=0) THEN PixelCnt_int(7 downto 0) NULL; END CASE; END IF; END PROCESS WRDATA; -* MemRdClk 0); ELSE RdAddress_int0); ELSE RdAddress_int8); WFPGA(0xff,RegData); . . . 2010-01-14,10:41:41 资料 邮件 回复 引用回复 编辑 删除 怎么没有人赐教啊 ! 【3 楼】 dz
8、f2222 积分:6派别:等级:-来自: 2010-01-14,10:45:40 资料 邮件 回复 引用回复 编辑 删除 WRDATA: process(WR_int) begin IF(WR_intEVENT AND WR_int=0) then 如果单片机的写信号是低电平有效的话,上句 是否应改为 IF(WR_intEVENT AND WR_int=1) then 【4 楼】 wang110 积分:33派别:等级:-来自: 2010-01-14,21:46:31 资料 邮件 回复 引用回复 编辑 删除 没看清,删了,【5 楼】 888888888888 积分:1895派别:等级:-来自:南京