[問題] VHDL轉Verilog的問題(fopen函式不會用)
文章有點長>"<,希望有大大能幫忙一下
以下是小弟寫的Verilog code:
integer fileId,i,cc;
integer fileId1,cc1;
reg [7:0] bmp_data [0:2000000];
integer bmp_width, bmp_hight, data_start_index, bmp_size;
initial
begin
fileId = $fopen("35.bmp","rb");
fileId1 = $fopen("35_black","wb");
cc = $fread(bmp_data,fileId);
bmp_width = {bmp_data[21],bmp_data[20],bmp_data[19],bmp_data[18]};
bmp_hight = {bmp_data[25],bmp_data[24],bmp_data[23],bmp_data[22]};
data_start_index = {bmp_data[13],bmp_data[12],bmp_data[11],bmp_data[10]};
bmp_size = {bmp_data[5],bmp_data[4],bmp_data[3],bmp_data[2]};
clk = 0;
reset_n = 1;
#(`PERIOD1/4) reset_n = 0;
data_memory[3] = 32'd0;
instruction_memory[0] = 16'h2700;
#(`PERIOD1 * 2) reset_n = 1;
for(i = 0; i < 54; i = i + 1)
begin
$fwrite(fileId1, "%c", bmp_data[i]);
end
for(i = data_start_index; i < bmp_size; i = i + 3)
begin
#(`PERIOD1) instruction_memory[2] = {8'h20, bmp_data[i + 2]};
#(`PERIOD1) instruction_memory[4] = {8'h21, bmp_data[i + 1]};
#(`PERIOD1) instruction_memory[6] = {8'h22, bmp_data[i]};
$fwrite(fileId1, "%c", data_memory[3]);
$fwrite(fileId1, "%c", data_memory[3]);
$fwrite(fileId1, "%c", data_memory[3]);
end
$fclose(fileId);
$fclose(fileId1);
$finish;
end
endmodule
由於沒寫過VHDL所以想詢問部分不會寫的地方,以及是否有錯誤
(黃色部分是自己寫的VHDL,紅色表示不確定是否正確)
------------------------------------------------------------------
integer fileId,i,cc;
integer fileId1,cc1;
reg [7:0] bmp_data [0:2000000];
integer bmp_width, bmp_hight, data_start_index, bmp_size;
------------------------------------------------------------------
constant fileId: std_logic;
constant fileId1: std_logic;
constant i: std_logic;
constant cc: std_logic;
constant cc1: std_logic;
type bmp_data is array(3 downto 0,0 to 2000000) of std_logic;
constant bmp_width: std_logic;
constant bmp_hight: std_logic;
constant data_start_index: std_logic;
constant bmp_size: std_logic;
------------------------------------------------------------------
------------------------------------------------------------------
initial
begin
fileId = $fopen("35.bmp","rb");
fileId1 = $fopen("35_black","wb");
cc = $fread(bmp_data,fileId);
bmp_width = {bmp_data[21],bmp_data[20],bmp_data[19],bmp_data[18]};
bmp_hight = {bmp_data[25],bmp_data[24],bmp_data[23],bmp_data[22]};
data_start_index = {bmp_data[13],bmp_data[12],bmp_data[11],bmp_data[10]};
bmp_size = {bmp_data[5],bmp_data[4],bmp_data[3],bmp_data[2]};
clk = 0;
reset_n = 1;
#(`PERIOD1/4) reset_n = 0;
data_memory[3] = 32'd0;
instruction_memory[0] = 16'h2700;
#(`PERIOD1 * 2) reset_n = 1;
-------------------------------------------------------------------
begin
fileId <= $fopen("35.bmp","rb");
fileId1 <= $fopen("35_black","wb");
cc <= $fread(bmp_data,fileId);
bmp_width <= bmp_data(21)&bmp_data(20)&bmp_data(19)&bmp_data(18);
bmp_hight <= bmp_data(25)&bmp_data(24)&bmp_data(23)&bmp_data(22);
data_start_index <= bmp_data(13)&bmp_data(12)&bmp_data(11)&bmp_data(10);
bmp_size <= bmp_data(5)&bmp_data(4)&bmp_data(3)&bmp_data(2);
clk <= 0;
reset_n <= '1', '0' after PERIOD1/4;
data_memory(3) <= X"00000000";
instruction_memory(0) <= X"2700";
reset_n <= '1' after PERIOD1*2;
--------------------------------------------------------------------
--------------------------------------------------------------------
for(i = 0; i < 54; i = i + 1)
begin
$fwrite(fileId1, "%c", bmp_data[i]);
end
for(i = data_start_index; i < bmp_size; i = i + 3)
begin
#(`PERIOD1) instruction_memory[2] = {8'h20, bmp_data[i + 2]};
#(`PERIOD1) instruction_memory[4] = {8'h21, bmp_data[i + 1]};
#(`PERIOD1) instruction_memory[6] = {8'h22, bmp_data[i]};
$fwrite(fileId1, "%c", data_memory[3]);
$fwrite(fileId1, "%c", data_memory[3]);
$fwrite(fileId1, "%c", data_memory[3]);
end
$fclose(fileId);
$fclose(fileId1);
$finish;
end
---------------------------------------------------------------------
process()
begin
lp: for i in 0 to 54 loop
$fwrite(fileId1,"%c",bmp_data(i));
end loop lp;
begin
lp1: for i+3 in data_start_index to bmp_size
instruction_memory(2) <= X"20 & bmp_data(i+2) after PERIOD1;
instruction_memory(4) <= X"21 & bmp_data(i+1) after PERIOD1;
instruction_memory(6) <= X"22 & bmp_data(i) after PERIOD1;
$fwrite(fileId1, "%c", data_memory[3]);
$fwrite(fileId1, "%c", data_memory[3]);
$fwrite(fileId1, "%c", data_memory[3]);
end loop lp1;
$fclose(fileId);
$fclose(fileId1);
$finish;
end process
希望有人可以指證一下哪邊的問題和觀念QQ
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.168.135
※ 編輯: starmoon0918 來自: 140.117.168.135 (01/02 17:00)