OSDN Git Service

定期コミット
[oca1/test.git] / VGADisplay / src / vga_top.nsl
index d13b40a..42a58d4 100644 (file)
@@ -8,9 +8,26 @@
 \r
 #include "vga_gen.nsl"\r
 #include "exp_ctrl.nsh"\r
+#include "from_ctrl.nsh"\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
+#define CNTHQS      26'd6250000 // 0.125 [s]\r
+#define CNT10mS      26'd500000 // 10    [ms]\r
+#define CNT2mS       26'd100000 // 2     [ms]\r
+\r
+/*\r
+#define CNT1S     26'd500 // 1     [s]\r
+#define CNTHS             26'd250 // 0.5   [s]\r
+#define CNTQS     26'd125 // 0.25  [s]\r
+#define CNTHQS      26'd62 // 0.125 [s]\r
+#define CNT10mS      26'd50 // 10    [ms]\r
+#define CNT2mS       26'd10 // 2     [ms]\r
+*/\r
+\r
 declare vga_top {\r
        input i_sw ;\r
 \r
@@ -52,8 +69,15 @@ module vga_top {
        reg r_wradrs1[8] = 0 ;\r
        reg r_wradrs2[8] = 0 ;\r
 \r
+       func_self test_write() ;\r
+\r
+       reg r_wait_cnt[26] = 0 ;                // wait time count\r
+       reg r_wait_val[26] = 0 ;                // wait time value\r
+       proc_name p_wait( r_wait_val ) ;\r
+\r
        vga_gen         u_VGA ;\r
        exp_ctrl        u_EXP ;\r
+       from_ctrl       u_FROMC ;\r
        \r
        {\r
                /* VGA  */\r
@@ -77,6 +101,10 @@ module vga_top {
                                        fs_fifo1_charge() ;\r
                                }\r
                        }\r
+                       \r
+                       if(u_FROMC.fo_write_vram){\r
+                               u_EXP.fi_Wr_req(u_FROMC.o_vram_adrs, u_FROMC.o_vram_wdata) ;\r
+                       }\r
                }\r
 \r
                any {\r
@@ -101,14 +129,10 @@ module vga_top {
        \r
        \r
        func fs_init seq {\r
-//             u_VGA.fi_fifo1_reset() ;\r
-//             u_VGA.fi_fifo1_reset() ;\r
-//             u_VGA.fi_fifo2_reset() ;\r
-//             u_VGA.fi_fifo2_reset() ;\r
-\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, 8'h0F) ;\r
+//                     u_EXP.fi_Wr_req(r_init_cnt, 8'd0F) ;\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
@@ -144,6 +168,7 @@ module vga_top {
 \r
                r_vram_start_adrs := r_vram_start_adrs + 14'd40 ;\r
                r_reset := 0b1 ;\r
+//             test_write() ;\r
        }\r
        \r
        func fs_fifo1_write {\r
@@ -155,9 +180,6 @@ module vga_top {
        }\r
        \r
        func fs_fifo1_charge seq {\r
-//             u_VGA.fi_fifo1_reset() ;\r
-//             u_VGA.fi_fifo1_reset() ;\r
-\r
                for(r_init_cnt:=0;r_init_cnt<40;r_init_cnt++) {\r
                        u_EXP.fi_Rd_req(r_init_cnt) ;\r
                        r_vram_rddata := u_EXP.o_Rdata ;\r
@@ -175,8 +197,6 @@ module vga_top {
        }\r
 \r
        func fs_fifo2_charge seq {\r
-//             u_VGA.fi_fifo2_reset() ;\r
-//             u_VGA.fi_fifo2_reset() ;\r
 \r
                for(r_init_cnt:=0;r_init_cnt<40;r_init_cnt++) {\r
                        u_EXP.fi_Rd_req(r_init_cnt) ;\r
@@ -204,4 +224,146 @@ module vga_top {
                        }\r
                }\r
        }\r
+       \r
+       proc p_wait {\r
+               any {\r
+                       r_wait_cnt == r_wait_val : {\r
+                               r_wait_cnt := 0 ;\r
+                               finish() ;\r
+                       }\r
+                       else : {\r
+                               r_wait_cnt++ ;\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
+               \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
+\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
 }
\ No newline at end of file