[an error occurred while processing this directive]
нужно синтезировать содержимое памяти или описать ROM?
(«Телесистемы»: Конференция 'Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено yes 22 апреля 2004 г. 11:44
В ответ на: Подскажите как синтезировать ROM на Verilog'e отправлено DV 22 апреля 2004 г. 01:12

ну например так

module ROM32 (SD,
N_ROM, SA, N_BEM, N_WRM, N_OEM);

parameter rom_bit=21;
parameter rom_size=(1<
inout [31:0] SD;
input [22:2] SA;
input [3:0] N_BEM;
input N_ROM, N_WRM, N_OEM;

wire [(rom_bit+1):2] #60 sa1 = SA;//===========
wire wr = ~N_ROM & ~N_WRM;
wire #60 rd = ~N_ROM & ~N_OEM;
wire #5 b0 = wr & ~N_BEM[0];
wire #5 b1 = wr & ~N_BEM[1];
wire #5 b2 = wr & ~N_BEM[2];
wire #5 b3 = wr & ~N_BEM[3];

reg [31:0] data;
reg [31:0] ROM[0:rom_size];
wire [31:0] #5 d = SD;

assign SD = (rd & ~N_OEM & ~N_ROM) ? ROM[sa1] :
32'hzzzzzzzz;

initial
begin
`ifdef romname
$readmemh(`romname,ROM);
`else
`d("##### No ROM defined");
`q
`endif
end

always @(negedge wr)
begin
data=ROM[sa1];
if(b0) data[7:0] = d[7:0];
if(b1) data[15:8] = d[15:8];
if(b2) data[23:16] = d[23:16];
if(b3) data[31:24] = d[31:24];
ROM[sa1]=data;
end

endmodule

а память (для функции $readmemh)
@00000000
46c06008
46c04778
e3e04007
e0000004
e5810000
e3a0050e
e59f1020
e3a02000
e4903004
e0822003
e1500001
dafffffb

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru