Assignment Mega
Assignment Mega
NUST
Spring 2024
MEGA ASSIGNMENT
Name CMS
input CLOCK_50;
output VGA_HS;
output VGA_VS;
output VGA_BLANK_N;
output VGA_SYNC_N;
output VGA_CLK;
wire [7:0] x;
wire [6:0] y;
vga_adapter VGA(.resetn(KEY[0]),.clock(CLOCK_50),.colour(colour),.x(x),.y(y),.plot(~(KEY[1])),
.VGA_R(VGA_R),.VGA_G(VGA_G),.VGA_B(VGA_B),.VGA_HS(VGA_HS),.VGA_VS(VGA_VS),
.VGA_BLANK(VGA_BLANK_N),.VGA_SYNC(VGA_SYNC_N),.VGA_CLK(VGA_CLK));
defparam VGA.BITS_PER_COLOUR_CHANNEL = 1;
endmodule
OUTPUT ON SCREEN:
VERILOG CODE:
module TASK2(input CLOCK_50, input [3:0]KEY, output [9:0] VGA_R, output [9:0] VGA_G, output [9:0]
VGA_B,output VGA_HS, output VGA_VS,output VGA_BLANK_N, output VGA_SYNC_N, output VGA_CLK,input
[9:0]SW);
reg state,next_state;
parameter drawc=0,stop=1;
always @(posedge CLOCK_50) begin
if (~KEY[3])begin
xcoor = 0;
ycoor = 0;
plot = 0;
end
else if (state==drawc)begin
begin
xcoor = xcoor + 1;
plot = 1;
end
else begin
xcoor = 0;
plot = 1;
end
end
vga_adapter VGA(.resetn(KEY[3]),.clock(CLOCK_50),.colour(colour),.x(xcoor),.y(ycoor),.plot(plot),.VGA_R(VGA_R),
.VGA_G(VGA_G),.VGA_B(VGA_B),.VGA_HS(VGA_HS),.VGA_VS(VGA_VS),.VGA_BLANK(VGA_BLANK_N),
.VGA_SYNC(VGA_SYNC_N),.VGA_CLK(VGA_CLK));
end
defparam VGA.BITS_PER_COLOUR_CHANNEL = 1;
VERILOG CODE:
module Task3(
input CLOCK_50,
output VGA_HS,
output VGA_VS,
output VGA_BLANK_N,
assign r_check =SW[8:3];
assign r=(r_check<59)?r_check:59;
case (state)
RESET: next_state=(reset_done)?BEGIN:RESET;
endcase
end
if(~KEY[0])
state<=RESET;
else if (~KEY[3])
else
end
if (~KEY[0]) begin
xcoor = 0;
ycoor = 0;
x = 0;
y = r;end
if (~KEY[3]) begin
xcoor = 0;
ycoor = 0;
x = 0;
y = r;
d = (3-2*r);
xc = 80;
yc = 60;
colour = SW[2:0];
plot = 0;
reset_done=0;
end
case (state)
S0: begin
xcoor = x + xc;
ycoor = y + yc;
plot = 1;
end
S1: begin
xcoor = xc - x;
ycoor = y + yc;
plot = 1;
end
S2: begin
xcoor = x + xc;
ycoor = yc - y;
plot = 1;
end
S3: begin
xcoor = xc - x;
ycoor = yc - y;
plot = 1;
end
S4: begin
xcoor = xc + y;
ycoor = x + yc;
plot = 1;
end
S5: begin
xcoor = xc - y;
ycoor = x + yc;
plot = 1;
end
S6: begin
xcoor = xc + y;
ycoor = yc - x;
plot = 1;
end
S7: begin
xcoor = xc - y;
ycoor = yc - x;
plot = 1;
x = x + 1;
if (d < 0)
d = d + (4*x) + 6;
else begin
d = d + 4*(x-y) + 10;
y = y - 1;
end end
RESET : begin
begin
xcoor = xcoor + 1;
colour = 0;
plot = 1;
end
xcoor = 0;
colour = 0;
plot = 1;
end
else begin
reset_done = 1;
end
end
endcase
end
end
.VGA_R(VGA_R), .VGA_G(VGA_G),.VGA_B(VGA_B),.VGA_HS(VGA_HS),.VGA_VS(VGA_VS),
.VGA_BLANK(VGA_BLANK_N),.VGA_SYNC(VGA_SYNC_N),.VGA_CLK(VGA_CLK));
defparam VGA.BITS_PER_COLOUR_CHANNEL = 1;
endmodule
OUTPUT ON SCREEN: