1 //%d CNT_H_00 0b0000000000
2 //%d CNT_H1 0b0001011111 /* 96clock */
3 //%d CNT_H_REP32 0b0001101110 /* 110 clock */
4 //%d CNT_H_DATA_IN 0b0010001110 /* 142 for 144clock */
5 //%d CNT_H_DATA_OUT 0b1100001110 /* 782 for 784clock */
6 //%d CNT_H2 0b1100011111 /* 800clock */
7 //%d CNT_32 0b11111 /* 32dot */
8 //%d H_MINUS_32 (^(0b0000011111) + 0b0000000001) /* -32 */
9 //%d H_MINUS_1 0b1111111111 /* -1 */
10 //%d V_MINUS_32 (^(0b0000000000000011111) + 0b0000000000000000001) /*-32*/
11 //%d V_MINUS_1 0b1111111111111111111 /* -1 */
12 //%d CNT_V1 0b0000000011000111111 /* 1600clock */
13 //%d CNT_V_DATA_IN 0b0000110000011011111 /* 24800clock */
14 //%d CNT_V_DATA_OUT 0b1100011110011011111 /* 408800clock */
15 //%d CNT_V2 0b1100101110000011111 /* 416800clock */
18 * VGA
\81@Signal Generate Circuit
19 * Module name is "vga_generate"
20 * @auther Yujiro Kaneko
24 %d CNT_H_00 10'd0 /* for Initialize */
25 %d CNT_H1 10'd96 /* 96clock */
26 %d CNT_H_REP32 10'd110 /* 110 clock */
27 %d CNT_H_DATA_IN 10'd142 /* 142 for 144clock */
28 %d CNT_H_DATA_OUT 10'd782 /* 782 for 784clock */
29 %d CNT_H2 10'd800 /* 800clock */
31 %d CNT_32 5'b11111 /* 32dot */
33 %d H_MINUS_32 10'd1111100001 /* -31 */
34 %d H_MINUS_1 10'b1111111111 /* -1 */
36 %d V_MINUS_32 19'b1111111111111100001 /* -32 */
37 %d V_MINUS_1 19'b1111111111111111111 /* -1 */
39 %d CNT_V1 19'd1599 /* 1600clock */
40 %d CNT_V_DATA_IN 19'd24799 /* 24800clock */
41 %d CNT_V_DATA_OUT 19'd408799 /* 408800clock */
42 %d CNT_V2 19'd416799 /* 416800clock */
45 declare vga_generate interface {
48 input i_pix32_data[32] ;
52 output o_vga_green[4] ;
53 output o_vga_blue[4] ;
56 func_in fi_ack_req_32dot(i_pix32_data) ;
57 func_out fo_req_32dot ;
61 func_self fs_disp_data ;
73 reg r_bit32_cnt[5] = 0 ;
78 reg r_data_select_flag = 0 ;
89 o_vga_green = w_green;
94 //horizonal synchronous signal generate
97 r_h_sync := ~r_h_sync;
100 r_h_cnt == 10'd142 : {
104 r_h_cnt == 10'd782 : {
108 r_h_cnt == 10'd800 : {
109 r_h_sync := ~r_h_sync;
117 //vartical synchronous signal generate
119 r_v_cnt == CNT_V1 : {
120 r_v_sync := ~r_v_sync;
123 r_v_cnt == CNT_V_DATA_IN : {
127 r_v_cnt == CNT_V_DATA_OUT : {
131 r_v_cnt == CNT_V2 : {
132 r_v_sync := ~r_v_sync;
141 if( r_hdata_flg & r_vdata_flg ) fs_disp_data();
143 //32dot request signal
145 ((r_h_cnt >= (CNT_H_DATA_IN + H_MINUS_32)) &
146 (r_h_cnt <= (CNT_H_DATA_OUT + H_MINUS_32 + H_MINUS_1))) &
147 ((r_v_cnt >= (CNT_V_DATA_IN + V_MINUS_32)) &
148 (r_v_cnt <= (CNT_V_DATA_OUT + V_MINUS_32 + V_MINUS_1))) : {
149 if(r_bit32_cnt == 0b00000) fo_req_32dot() ;
151 r_bit32_cnt == 0b11111 : r_bit32_cnt := 0b00000 ;
152 else : r_bit32_cnt := r_bit32_cnt + 0b00001 ;
155 else : r_bit32_cnt := 0b00000 ;
159 if (r_hdata_flg & r_vdata_flg) {
187 func fi_ack_req_32dot {
188 r_data_select_flag := ~r_data_select_flag ;
190 r_data_select_flag : r1 := i_pix32_data ;
191 else : r2 := i_pix32_data ;
198 r_bit32_cnt == 0b00000 : w_disp_data = r1[31] ;
199 r_bit32_cnt == 0b00001 : w_disp_data = r1[30] ;
200 r_bit32_cnt == 0b00010 : w_disp_data = r1[29] ;
201 r_bit32_cnt == 0b00011 : w_disp_data = r1[28] ;
202 r_bit32_cnt == 0b00100 : w_disp_data = r1[27] ;
203 r_bit32_cnt == 0b00101 : w_disp_data = r1[26] ;
204 r_bit32_cnt == 0b00110 : w_disp_data = r1[25] ;
205 r_bit32_cnt == 0b00111 : w_disp_data = r1[24] ;
206 r_bit32_cnt == 0b01000 : w_disp_data = r1[23] ;
207 r_bit32_cnt == 0b01001 : w_disp_data = r1[22] ;
208 r_bit32_cnt == 0b01010 : w_disp_data = r1[21] ;
209 r_bit32_cnt == 0b01011 : w_disp_data = r1[20] ;
210 r_bit32_cnt == 0b01100 : w_disp_data = r1[19] ;
211 r_bit32_cnt == 0b01101 : w_disp_data = r1[18] ;
212 r_bit32_cnt == 0b01110 : w_disp_data = r1[17] ;
213 r_bit32_cnt == 0b01111 : w_disp_data = r1[16] ;
214 r_bit32_cnt == 0b10000 : w_disp_data = r1[15] ;
215 r_bit32_cnt == 0b10001 : w_disp_data = r1[14] ;
216 r_bit32_cnt == 0b10010 : w_disp_data = r1[13] ;
217 r_bit32_cnt == 0b10011 : w_disp_data = r1[12] ;
218 r_bit32_cnt == 0b10100 : w_disp_data = r1[11] ;
219 r_bit32_cnt == 0b10101 : w_disp_data = r1[10] ;
220 r_bit32_cnt == 0b10110 : w_disp_data = r1[9] ;
221 r_bit32_cnt == 0b10111 : w_disp_data = r1[8] ;
222 r_bit32_cnt == 0b11000 : w_disp_data = r1[7] ;
223 r_bit32_cnt == 0b11001 : w_disp_data = r1[6] ;
224 r_bit32_cnt == 0b11010 : w_disp_data = r1[5] ;
225 r_bit32_cnt == 0b11011 : w_disp_data = r1[4] ;
226 r_bit32_cnt == 0b11100 : w_disp_data = r1[3] ;
227 r_bit32_cnt == 0b11101 : w_disp_data = r1[2] ;
228 r_bit32_cnt == 0b11110 : w_disp_data = r1[1] ;
229 r_bit32_cnt == 0b11111 : {
230 w_disp_data = r1[0] ;
235 r_bit32_cnt == 0b00000 : w_disp_data = r2[31] ;
236 r_bit32_cnt == 0b00001 : w_disp_data = r2[30] ;
237 r_bit32_cnt == 0b00010 : w_disp_data = r2[29] ;
238 r_bit32_cnt == 0b00011 : w_disp_data = r2[28] ;
239 r_bit32_cnt == 0b00100 : w_disp_data = r2[27] ;
240 r_bit32_cnt == 0b00101 : w_disp_data = r2[26] ;
241 r_bit32_cnt == 0b00110 : w_disp_data = r2[25] ;
242 r_bit32_cnt == 0b00111 : w_disp_data = r2[24] ;
243 r_bit32_cnt == 0b01000 : w_disp_data = r2[23] ;
244 r_bit32_cnt == 0b01001 : w_disp_data = r2[22] ;
245 r_bit32_cnt == 0b01010 : w_disp_data = r2[21] ;
246 r_bit32_cnt == 0b01011 : w_disp_data = r2[20] ;
247 r_bit32_cnt == 0b01100 : w_disp_data = r2[19] ;
248 r_bit32_cnt == 0b01101 : w_disp_data = r2[18] ;
249 r_bit32_cnt == 0b01110 : w_disp_data = r2[17] ;
250 r_bit32_cnt == 0b01111 : w_disp_data = r2[16] ;
251 r_bit32_cnt == 0b10000 : w_disp_data = r2[15] ;
252 r_bit32_cnt == 0b10001 : w_disp_data = r2[14] ;
253 r_bit32_cnt == 0b10010 : w_disp_data = r2[13] ;
254 r_bit32_cnt == 0b10011 : w_disp_data = r2[12] ;
255 r_bit32_cnt == 0b10100 : w_disp_data = r2[11] ;
256 r_bit32_cnt == 0b10101 : w_disp_data = r2[10] ;
257 r_bit32_cnt == 0b10110 : w_disp_data = r2[9] ;
258 r_bit32_cnt == 0b10111 : w_disp_data = r2[8] ;
259 r_bit32_cnt == 0b11000 : w_disp_data = r2[7] ;
260 r_bit32_cnt == 0b11001 : w_disp_data = r2[6] ;
261 r_bit32_cnt == 0b11010 : w_disp_data = r2[5] ;
262 r_bit32_cnt == 0b11011 : w_disp_data = r2[4] ;
263 r_bit32_cnt == 0b11100 : w_disp_data = r2[3] ;
264 r_bit32_cnt == 0b11101 : w_disp_data = r2[2] ;
265 r_bit32_cnt == 0b11110 : w_disp_data = r2[1] ;
266 r_bit32_cnt == 0b11111 : {
267 w_disp_data = r2[0] ;