-
Notifications
You must be signed in to change notification settings - Fork 0
/
Render.v.bak
100 lines (80 loc) · 3.53 KB
/
Render.v.bak
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
module render (clk, cima, baixo, row, column, saida_galinha, saida_carro, clk2);
/*640 x 480 é a resolução do kit*/
input clk, cima, baixo, clk2;
input [9:0] row, column;
output reg saida_galinha, saida_carro;
integer reset = 0;
integer coluna_galinha = 320; /*column_count*/
integer linha_galinha = 435; /*row_count*/
/*três linhas de carros*/
/**/
integer coluna_carro1 = 600;
integer linha_carro1 = 60;
integer coluna_carro1_2 = 300;
integer linha_carro1_2 = 60;
integer coluna_carro2 = 0;
integer linha_carro2 = 180;
integer coluna_carro3 = 600;
integer linha_carro3 = 300;
always @(posedge clk)
begin
/*Carro 1 começa na direita da tela, e se move pra esquerda*/
/*Velocidade 2*/
coluna_carro1 = coluna_carro1 - 2;
if (coluna_carro1 <= 0)
coluna_carro1 = 640;
coluna_carro1_2 = coluna_carro1_2 - 2;
if (coluna_carro1_2 <= 0)
coluna_carro1_2 = 640;
/*Carro 2 começa na esquerda da tela, e se move pra direita*/
/*Velocidade 3*/
coluna_carro2 = coluna_carro2 + 3;
if (coluna_carro2+120 >= 640)
coluna_carro2 = 0;
/*Carro 3 começa na direita da tela, e se move pra esquerda*/
/*Velocidade 1*/
coluna_carro3 = coluna_carro3 - 1;
if (coluna_carro3 <= 0)
coluna_carro3 = 640;
end
always @*
begin
/*Renderizar Galinha*/
if(row < linha_galinha + 30 & linha_galinha < row & column < coluna_galinha + 30 & coluna_galinha < column)
saida_galinha = 1;
else
saida_galinha = 0;
/*Renderizar veiculos*/
if ((row < linha_carro1 + 60 & linha_carro1 < row & column < coluna_carro1 + 120 & coluna_carro1 < column)
| (row < linha_carro1_2 + 60 & linha_carro1_2 < row & column < coluna_carro1_2 + 120 & coluna_carro1_2 < column)
| (row < linha_carro2 + 60 & linha_carro2 < row & column < coluna_carro2 + 120 & coluna_carro2 < column)
| (row < linha_carro3 + 60 & linha_carro3 < row & column < coluna_carro3 + 120 & coluna_carro3 < column)
)
saida_carro = 1;
else
saida_carro = 0;
/*Tratamento de colisão*/
if ((((linha_galinha>=linha_carro1 & linha_galinha<=linha_carro1+60) | (linha_galinha+30 >= linha_carro1 & linha_galinha+30<=linha_carro1+60))
& ((coluna_galinha>=coluna_carro1 & coluna_galinha<=coluna_carro1+120) | (coluna_galinha+30 >= coluna_carro1 & coluna_galinha+30<=coluna_carro1+120)))
|
(((linha_galinha>=linha_carro1_2 & linha_galinha<=linha_carro1_2+60) | (linha_galinha+30 >= linha_carro1_2 & linha_galinha+30<=linha_carro1_2+60))
& ((coluna_galinha>=coluna_carro1_2 & coluna_galinha<=coluna_carro1_2+120) | (coluna_galinha+30 >= coluna_carro1_2 & coluna_galinha+30<=coluna_carro1_2+120)))
|
(((linha_galinha>=linha_carro2 & linha_galinha<=linha_carro2+60) | (linha_galinha+30 >= linha_carro2 & linha_galinha+30<=linha_carro2+60))
& ((coluna_galinha>=coluna_carro2 & coluna_galinha<=coluna_carro2+120) | (coluna_galinha+30 >= coluna_carro2 & coluna_galinha+30<=coluna_carro2+120)))
|
(((linha_galinha>=linha_carro3 & linha_galinha<=linha_carro3+60) | (linha_galinha+30 >= linha_carro3 & linha_galinha+30<=linha_carro3+60))
& ((coluna_galinha>=coluna_carro3 & coluna_galinha<=coluna_carro3+120) | (coluna_galinha+30 >= coluna_carro3 & coluna_galinha+30<=coluna_carro3+120))))
reset = 1;
else reset = 0;
end
// Controle pra linha galinha
always @(posedge clk2)
begin
if(reset == 1) linha_galinha = 435;
else if(cima == 1) linha_galinha = linha_galinha - 60;
else if(baixo == 1) linha_galinha = linha_galinha + 60;
if(linha_galinha > 435) linha_galinha = 435;
else if(linha_galinha <= 0) linha_galinha = 435;
end
endmodule