例如,你想实现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 即可读出数据了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)