*/\r
\r
#include "vga_gen.nsl"\r
-#include "exp_ctrl.nsh"\r
+#include "vram.nsl"\r
//#include "from_ctrl.nsh"\r
#include "push_sw.nsl"\r
\r
-#define CNT1S 26'd50000000\r
-\r
#define CNT1S 26'd50000000 // 1 [s]\r
#define CNTHS 26'd25000000 // 0.5 [s]\r
#define CNTQS 26'd12500000 // 0.25 [s]\r
reg r_sec_cnt[26] = 0 ;\r
reg r_LED = 0 ;\r
\r
- reg r_init_cnt[14] = 0 ;\r
- reg r_vram_adrs1[14] = 0 ;\r
- reg r_vram_adrs2[14] = 0 ;\r
+ reg r_init_cnt[13] = 0 ;\r
+ reg r_vram_adrs[14] = 0 ;\r
reg r_vram_rddata[16] = 0 ;\r
- reg r_vram_start_adrs[14] = 0 ;\r
- reg r_hld_vram_start = 0 ;\r
+ reg r_vram_start_adrs[13] = 0 ;\r
+ reg r_fifo_write_adrs = 0 ;\r
reg r_fifo_rst = 0 ;\r
+ reg r_vga_ack_hld = 0 ;\r
\r
- wire w_wrdata1[8] ;\r
- wire w_wrdata2[8] ;\r
- wire w_wradrs1[8] ;\r
- wire w_wradrs2[8] ;\r
- func_self fs_fifo1_write( w_wradrs1, w_wrdata1 ) ;\r
- func_self fs_fifo2_write( w_wradrs2, w_wrdata2 ) ;\r
- \r
+ wire w_data[8], w_exp_data[16] ;\r
+ func_self fs_exp_exec(w_data):w_exp_data ;\r
func_self fs_init() ;\r
- \r
- func_self fs_fifo1_charge() ;\r
- func_self fs_fifo2_charge() ;\r
-\r
- func_self fs_vram_cnt_inc ;\r
- \r
- reg r_wradrs1[8] = 0 ;\r
- reg r_wradrs2[8] = 0 ;\r
+ func_self fs_fifo_write() ;\r
\r
reg r_out_sel = 0 ;\r
\r
\r
vga_gen u_VGA ;\r
push_sw u_BTN[4] ;\r
-// exp_ctrl u_EXP ;\r
+ vram u_VRAM ;\r
// from_ctrl u_FROMC ;\r
\r
{\r
- /* IF */\r
+ /* UI */\r
u_BTN[0].i_sw = i_sw[0] ;\r
u_BTN[1].i_sw = i_sw[1] ;\r
u_BTN[2].i_sw = i_sw[2] ;\r
o_vsync = u_VGA.o_vsync ;\r
o_hsync = u_VGA.o_hsync ;\r
u_VGA.i_clk50 = m_clock ;\r
- r_hld_vram_start := u_VGA.o_vcnt[0] ;\r
u_VGA.i_fifo_rst = r_fifo_rst ;\r
-\r
- \r
\r
trigger := { trigger[1:0], 0b1 } ;\r
if(trigger == 3'b011) fs_init() ;\r
\r
-\r
-// if(~r_reset) {\r
-// any {\r
-// r_hld_vram_start & ~u_VGA.o_vcnt[0] : { //FIFO1\82ð\93Ç\82Ý\8fo\82·\83^\83C\83~\83\93\83O\r
-// if(u_VGA.o_vcnt < 10'd480) fs_fifo2_charge() ;\r
-// }\r
-// ~r_hld_vram_start & u_VGA.o_vcnt[0] : { //FIFO2\82ð\93Ç\82Ý\8fo\82·\83^\83C\83~\83\93\83O\r
-// if(u_VGA.o_vcnt < 10'd480) fs_fifo1_charge() ;\r
-// }\r
-// }\r
-// }\r
-\r
-\r
any {\r
r_sec_cnt == CNT1S : {\r
r_sec_cnt := 0 ;\r
}\r
}\r
\r
-\r
r_cnt := ~r_cnt ;\r
o_LED = { 0b00, i_sw, r_LED, u_VGA.o_led } ;\r
\r
u_VGA.m_clock = r_cnt ;\r
u_VGA.p_reset = r_reset ;\r
\r
-\r
+ r_vga_ack_hld := u_VGA.o_rdack ;\r
+ if(~r_vga_ack_hld & u_VGA.o_rdack) {\r
+ fs_fifo_write() ;\r
+ }\r
}\r
\r
func fs_init seq {\r
- /* VRAM\8f\89\8aú\89»\83\8b\81[\83`\83\93 */\r
-// for(r_init_cnt:=0;r_init_cnt<9600;r_init_cnt++) {\r
-// u_EXP.fi_Wr_req(r_init_cnt, r_init_cnt[7:0]) ;\r
-// }\r
- \r
-// for(r_init_cnt:=0;r_init_cnt<40;r_init_cnt++) {\r
-// u_EXP.fi_Rd_req(r_vram_adrs1) ;\r
-// r_vram_rddata := u_EXP.o_Rdata ;\r
-// {\r
-// fs_fifo1_write(r_wradrs1, r_vram_rddata[15:8]) ;\r
-// r_wradrs1++ ;\r
-// }\r
-// {\r
-// fs_fifo1_write(r_wradrs1, r_vram_rddata[7:0]) ;\r
-// r_wradrs1++ ;\r
-// }\r
-// \r
-// r_vram_adrs1++ ;\r
-// }\r
- \r
-// r_wradrs1 := 0 ; //act!!\r
-\r
- \r
-// for(r_init_cnt:=0;r_init_cnt<40;r_init_cnt++) {\r
-// u_EXP.fi_Rd_req(r_vram_adrs2) ;\r
-// r_vram_rddata := u_EXP.o_Rdata ;\r
-// {\r
-// fs_fifo2_write(r_wradrs2, r_vram_rddata[15:8]) ;\r
-// r_wradrs2++ ;\r
-// }\r
-// {\r
-// fs_fifo2_write(r_wradrs2, r_vram_rddata[7:0]) ;\r
-// r_wradrs2++ ;\r
-// }\r
-//\r
-// r_vram_adrs2++ ;\r
-// }\r
- \r
-// r_wradrs2 := 0 ; //ACT!!\r
-\r
-// r_vram_start_adrs := r_vram_start_adrs + 14'd40 ;\r
-\r
r_fifo_rst := 1 ;\r
;;;\r
r_fifo_rst := 0 ;\r
;;;\r
\r
- for(r_init_cnt:=0; r_init_cnt<120; r_init_cnt++ ) {\r
- u_VGA.fi_fifo_write(8'hFF) ;\r
- u_VGA.fi_fifo_write(8'h00) ;\r
- }\r
- for(r_init_cnt:=0; r_init_cnt<120; r_init_cnt++ ) {\r
- u_VGA.fi_fifo_write(8'h00) ;\r
- u_VGA.fi_fifo_write(8'hFF) ;\r
- } \r
+ fs_fifo_write() ;\r
+ p_wait(26'd500) ;\r
+ fs_fifo_write() ;\r
\r
r_reset := 0 ; \r
}\r
\r
-/* \r
- func fs_fifo1_write {\r
- u_VGA.fi_fifo1_write(w_wradrs1, w_wrdata1) ;\r
- }\r
-\r
- func fs_fifo2_write {\r
- u_VGA.fi_fifo2_write(w_wradrs2, w_wrdata2) ; \r
- }\r
-*/\r
- \r
-/*\r
- func fs_fifo1_charge seq {\r
- for(r_init_cnt:=0;r_init_cnt<40;r_init_cnt++) {\r
- u_EXP.fi_Rd_req(r_vram_adrs1) ;\r
- r_vram_rddata := u_EXP.o_Rdata ;\r
- {\r
- fs_fifo1_write(r_wradrs1, r_vram_rddata[7:0]) ;\r
- r_wradrs1++ ;\r
- }\r
- {\r
- fs_fifo1_write(r_wradrs1, r_vram_rddata[15:8]) ;\r
- r_wradrs1++ ;\r
- }\r
- \r
- r_vram_adrs1++;\r
- }\r
- \r
- r_wradrs1:= 0 ;\r
- if( r_vram_adrs1 == 14'd9600 ) r_vram_adrs1 := 0 ;\r
- }\r
-*/\r
-\r
-/*\r
- func fs_fifo2_charge seq {\r
-\r
- for(r_init_cnt:=0;r_init_cnt<40;r_init_cnt++) {\r
- u_EXP.fi_Rd_req(r_vram_adrs2) ;\r
- r_vram_rddata := u_EXP.o_Rdata ;\r
- {\r
- fs_fifo2_write(r_wradrs2, r_vram_rddata[7:0]) ;\r
- r_wradrs2++ ;\r
- }\r
- {\r
- fs_fifo2_write(r_wradrs2, r_vram_rddata[15:8]) ;\r
- r_wradrs2++ ;\r
- }\r
- r_vram_adrs2++ ;\r
- }\r
- \r
- r_wradrs2 := 0 ;\r
- if( r_vram_adrs2 == 14'd9600 ) r_vram_adrs2 := 0 ;\r
- \r
- fs_vram_cnt_inc() ;\r
- }\r
-\r
- func fs_vram_cnt_inc {\r
- any {\r
- r_vram_start_adrs == 14'd9560 :\r
- r_vram_start_adrs := 0 ;\r
- else : {\r
- r_vram_start_adrs := r_vram_start_adrs + 14'd40 ;\r
- }\r
- }\r
- }\r
-*/\r
\r
proc p_wait {\r
any {\r
}\r
} \r
}\r
+ \r
+ func fs_exp_exec {\r
+ w_exp_data = {\r
+ w_data[7], w_data[7], w_data[6], w_data[6],\r
+ w_data[5], w_data[5], w_data[4], w_data[4],\r
+ w_data[3], w_data[3], w_data[2], w_data[2],\r
+ w_data[1], w_data[1], w_data[0], w_data[0]\r
+ } ;\r
+ }\r
\r
-/* \r
- func test_write seq {\r
- p_wait(CNT1S) ;\r
- p_wait(CNT1S) ;\r
- p_wait(CNT1S) ;\r
- p_wait(CNT1S) ;\r
- p_wait(CNT1S) ;\r
- u_FROMC.fi_write_word(6'd0,5'd0,8'd87) ; //"W"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd1,5'd0,8'd97) ; //"a"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd2,5'd0,8'd107) ; //"k"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd3,5'd0,8'd101) ; //"e"\r
- p_wait(CNTHS) ;\r
-\r
- u_FROMC.fi_write_word(6'd5,5'd0,8'd117) ; //"u"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd6,5'd0,8'd112) ; //"p"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd7,5'd0,8'd44) ; //","\r
- p_wait(CNTHS) ;\r
-\r
- u_FROMC.fi_write_word(6'd9,5'd0,8'd78) ; //"N"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd10,5'd0,8'd101) ; //"e"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd11,5'd0,8'd111) ; //"o"\r
- p_wait(CNTHS) ;\r
-\r
- u_FROMC.fi_write_word(6'd12,5'd0,8'd46) ; //"."\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd13,5'd0,8'd46) ; //"."\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd14,5'd0,8'd46) ; //"."\r
- p_wait(CNTHS) ;\r
-\r
- p_wait(CNT1S) ;\r
- p_wait(CNT1S) ;\r
-\r
- u_FROMC.fi_write_word(6'd0,5'd1,8'd84) ; //"T"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd1,5'd1,8'd104) ; //"h"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd2,5'd1,8'd101) ; //"e"\r
- p_wait(CNTHS) ;\r
-\r
- u_FROMC.fi_write_word(6'd4,5'd1,8'd77) ; //"M"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd5,5'd1,8'd97) ; //"a"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd6,5'd1,8'd116) ; //"t"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd7,5'd1,8'd114) ; //"r"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd8,5'd1,8'd105) ; //"i"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd9,5'd1,8'd120) ; //"x"\r
- p_wait(CNTHS) ;\r
-\r
- u_FROMC.fi_write_word(6'd11,5'd1,8'd104) ; //"h"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd12,5'd1,8'd97) ; //"a"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd13,5'd1,8'd115) ; //"s"\r
- p_wait(CNTHS) ;\r
-\r
- u_FROMC.fi_write_word(6'd15,5'd1,8'd121) ; //"y"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd16,5'd1,8'd111) ; //"o"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd17,5'd1,8'd117) ; //"u"\r
- p_wait(CNTHS) ;\r
+ func fs_fifo_write seq {\r
+ for(r_init_cnt:=0; r_init_cnt<80; r_init_cnt++) {\r
+ u_VGA.fi_fifo_write( 8#r_fifo_write_adrs );\r
+ u_VGA.fi_fifo_write( ~(8#r_fifo_write_adrs) );\r
+ }\r
\r
- u_FROMC.fi_write_word(6'd18,5'd1,8'd46) ; //"."\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd19,5'd1,8'd46) ; //"."\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd20,5'd1,8'd46) ; //"."\r
- p_wait(CNTHS) ;\r
-\r
- p_wait(CNT1S) ;\r
- p_wait(CNT1S) ;\r
-\r
- u_FROMC.fi_write_word(6'd0,5'd2,8'd70) ; //"F"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd1,5'd2,8'd111) ; //"o"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd2,5'd2,8'd108) ; //"l"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd3,5'd2,8'd108) ; //"l"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd4,5'd2,8'd111) ; //"o"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd5,5'd2,8'd119) ; //"w"\r
- p_wait(CNTHS) ;\r
-\r
- u_FROMC.fi_write_word(6'd7,5'd2,8'd116) ; //"t"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd8,5'd2,8'd104) ; //"h"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd9,5'd2,8'd101) ; //"e"\r
- p_wait(CNTHS) ;\r
-\r
- u_FROMC.fi_write_word(6'd10,5'd2,8'd119) ; //"w"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd11,5'd2,8'd104) ; //"h"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd12,5'd2,8'd105) ; //"i"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd13,5'd2,8'd116) ; //"t"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd14,5'd2,8'd101) ; //"e"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd16,5'd2,8'd114) ; //"r"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd17,5'd2,8'd97) ; //"a"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd18,5'd2,8'd98) ; //"b"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd19,5'd2,8'd98) ; //"b"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd20,5'd2,8'd105) ; //"i"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd21,5'd2,8'd116) ; //"t"\r
- p_wait(CNTHS) ;\r
- u_FROMC.fi_write_word(6'd22,5'd2,8'd46) ; //"."\r
- p_wait(CNTHS) ;\r
+ r_fifo_write_adrs := ~r_fifo_write_adrs ;\r
}\r
-*/\r
}
\ No newline at end of file