
USE IEEE.std_logic_1164.ALL
USE IEEE.std_logic_unsigned.ALL
ENTITY sram IS
GENERIC(addr_length:Positive:=5
bit_wide:Positive:=8)
PORT(wr,rd:IN std_logic
address:IN std_logic_vector(addr_length-1 DOWNTO 0)
data:INOUT std_logic_vector(bit_wide-1 DOWNTO 0))
END sram
ARCHITECTURE behavioral OF sram IS
TYPE memory IS ARRAY(addr_length-1 DOWNTO 0) OF std_logic_vector(bit_wide-1 DOWNTO 0)
BEGIN
PROCESS(wr,rd,address,data)
VARIABLE mem:memory
BEGIN
IF wr='0' AND rd='1' THEN
data <= (OTHERS =>'Z')
mem(conv_integer(address)) := data
ELSIF wr='1' AND rd='0' THEN
data <= mem(conv_integer(address))
END IF
END PROCESS
END behavioral
要根据你给外部中断的特点,还有你的FPGA和外部设备的交互的时序来决定,例如你是给外部设备一个低电平作为中断,那你可以等待外部设备把fifo中的数据取走再进行抬高电平的动作。如果是一个脉冲作为给外部设备的中断,可以把超过7000个数,再给外部设备一个中断,这样外部设备中断就变成了两个条件,5000个fifo写时钟,还有fifo超过7000个数,要不然通过fifo多存数,总解决不了问题,因为fifo总是有限的。其实具体来说是有很多细则的,我大体给你讲讲在quartus 2中创建新工程之后,输入程序,然后编译,编译成功之后配置引脚,再综合。然后点击下载,即进入对目标器件fpga的配置下载 *** 作,下载成功就表示编程成功,这个时候,你就可以在板子上实现你程序文件的功能。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)