FPGA 怎么向ROM里写文件

FPGA 怎么向ROM里写文件,第1张

用数组加常量定义就祥扮行了。下面的例子做了个简单的封装,也许你并不需要,只要里面的语句就行了。当然你也可以谨搭灶修改接口,让它变成带使能的、同步的ROM等等。

例如,你想实现addr 0 = 0x55AA;addr 1 = 0x55BB;addr 2 = 0x55CC;addr 3 = 0x55DD

library IEEE

use IEEE.std_logic_1164.all

use IEEE.std_logic_arith.all

use IEEE.std_logic_unsigned.all

entity ROM is

port (

addr : in std_logic_vector(1 downto 0)

dout : out std_logic_vector(15 downto 0)

)

end ROM

architecture ROM_arch of ROM is

type ROM_ARRAY_TYPE is array (0 to 3) of std_logic_vector(15 downto 0)

constant ROM_DATA : ROM_ARRAY_TYPE := (

x"55AA",

x"枝团55BB",

x"55CC",

x"55DD"

)

begin

dout <= ROM_DATA(conv_integer(addr))

end ROM_arch

PIC单片机就是个MCU芯片,你如何使用FPGA验证? 除非你说的是PIC指令的MCU软核吧,想通过FPGA来验证软轿中核是否正确。如果这样的话,先不着急上FPGA,你直接创建一个ROM(HDL语言编写,或者IP CORE调用),然后将PIC编译器处理的汇编指令生成一个HEX文件存放在ROM中,使用MCU读取你的ROM完成指令的调用即可。 如果不是这样,你就再把贺启问题描述清禅帆如楚些,究竟想干嘛?

如下例子:

 module dac_rom(

    clk,

    rst,

    dac_out

)

input clk

input rst

output dac_out

        wire            rom_out

        reg             ena  

       伏高 reg     [7:0]   addr

        

assgin          dac_out = rom_out

test_rom dac_spi (

 .clka(clk),

 .ena(ena),

 .addra(addr),

 .douta(rom_out) )

always @(posedge clk or posedge rst)

begin

    if(rst)

    隐颤    begin

    addr <= 8'd0

    ena  <= 0

end

    else 

begin

    if(addr == 8'd128)

   灶厅败     begin

    addr <= 8'd0

    ena  <= 0

                end

    else 

        begin

    addr <= addr + 8'd1

    ena  <= 1

                end

end

end

endmodule

ROM读数据,只需要给 clk rst ena(可选) addr 即可读出数据了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12323130.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存