[問題] VHDL轉Verilog的問題(fopen函式不會用)

看板Electronics作者 (恐怖の孤独)時間13年前 (2013/01/02 16:58), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
文章有點長>"<,希望有大大能幫忙一下 以下是小弟寫的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)
文章代碼(AID): #1Gu_RCCt (Electronics)