2018-11-20 16:22:49 +00:00
|
|
|
|
|
|
|
`timescale 1 ns / 1 ps
|
|
|
|
|
2018-11-21 11:21:28 +00:00
|
|
|
module simplevga #
|
2018-11-20 16:22:49 +00:00
|
|
|
(
|
|
|
|
// Users to add parameters here
|
|
|
|
|
|
|
|
// User parameters ends
|
|
|
|
// Do not modify the parameters beyond this line
|
|
|
|
|
|
|
|
|
|
|
|
// Parameters of Axi Slave Bus Interface S00_AXI
|
|
|
|
parameter integer C_S00_AXI_DATA_WIDTH = 32,
|
|
|
|
parameter integer C_S00_AXI_ADDR_WIDTH = 4
|
|
|
|
)
|
|
|
|
(
|
|
|
|
// Users to add ports here
|
|
|
|
input wire I_PIXEL_CLK,
|
|
|
|
output wire O_VGA_HS, // horizontal sync output
|
|
|
|
output wire O_VGA_VS, // vertical sync output
|
|
|
|
output wire O_VGA_R, // 1-bit VGA red output
|
|
|
|
output wire O_VGA_G, // 1-bit VGA green output
|
|
|
|
output wire O_VGA_B, // 1-bit VGA blue output
|
|
|
|
// User ports ends
|
|
|
|
// Do not modify the ports beyond this line
|
|
|
|
|
|
|
|
|
|
|
|
// Ports of Axi Slave Bus Interface S00_AXI
|
|
|
|
input wire s00_axi_aclk,
|
|
|
|
input wire s00_axi_aresetn,
|
|
|
|
input wire [C_S00_AXI_ADDR_WIDTH-1 : 0] s00_axi_awaddr,
|
|
|
|
input wire [2 : 0] s00_axi_awprot,
|
|
|
|
input wire s00_axi_awvalid,
|
|
|
|
output wire s00_axi_awready,
|
|
|
|
input wire [C_S00_AXI_DATA_WIDTH-1 : 0] s00_axi_wdata,
|
|
|
|
input wire [(C_S00_AXI_DATA_WIDTH/8)-1 : 0] s00_axi_wstrb,
|
|
|
|
input wire s00_axi_wvalid,
|
|
|
|
output wire s00_axi_wready,
|
|
|
|
output wire [1 : 0] s00_axi_bresp,
|
|
|
|
output wire s00_axi_bvalid,
|
|
|
|
input wire s00_axi_bready,
|
|
|
|
input wire [C_S00_AXI_ADDR_WIDTH-1 : 0] s00_axi_araddr,
|
|
|
|
input wire [2 : 0] s00_axi_arprot,
|
|
|
|
input wire s00_axi_arvalid,
|
|
|
|
output wire s00_axi_arready,
|
|
|
|
output wire [C_S00_AXI_DATA_WIDTH-1 : 0] s00_axi_rdata,
|
|
|
|
output wire [1 : 0] s00_axi_rresp,
|
|
|
|
output wire s00_axi_rvalid,
|
|
|
|
input wire s00_axi_rready
|
|
|
|
);
|
|
|
|
wire [C_S00_AXI_DATA_WIDTH-1:0] reg_x;
|
|
|
|
wire [C_S00_AXI_DATA_WIDTH-1:0] reg_y;
|
|
|
|
wire [C_S00_AXI_DATA_WIDTH-1:0] reg_color;
|
|
|
|
// Instantiation of Axi Bus Interface S00_AXI
|
2018-11-21 11:21:28 +00:00
|
|
|
simplevga_S00_AXI # (
|
2018-11-20 16:22:49 +00:00
|
|
|
.C_S_AXI_DATA_WIDTH(C_S00_AXI_DATA_WIDTH),
|
|
|
|
.C_S_AXI_ADDR_WIDTH(C_S00_AXI_ADDR_WIDTH)
|
2018-11-21 11:21:28 +00:00
|
|
|
) simplevga_S00_AXI_inst (
|
2018-11-20 16:22:49 +00:00
|
|
|
.slave_reg0(reg_x),
|
|
|
|
.slave_reg1(reg_y),
|
|
|
|
.slave_reg2(reg_color),
|
|
|
|
.S_AXI_ACLK(s00_axi_aclk),
|
|
|
|
.S_AXI_ARESETN(s00_axi_aresetn),
|
|
|
|
.S_AXI_AWADDR(s00_axi_awaddr),
|
|
|
|
.S_AXI_AWPROT(s00_axi_awprot),
|
|
|
|
.S_AXI_AWVALID(s00_axi_awvalid),
|
|
|
|
.S_AXI_AWREADY(s00_axi_awready),
|
|
|
|
.S_AXI_WDATA(s00_axi_wdata),
|
|
|
|
.S_AXI_WSTRB(s00_axi_wstrb),
|
|
|
|
.S_AXI_WVALID(s00_axi_wvalid),
|
|
|
|
.S_AXI_WREADY(s00_axi_wready),
|
|
|
|
.S_AXI_BRESP(s00_axi_bresp),
|
|
|
|
.S_AXI_BVALID(s00_axi_bvalid),
|
|
|
|
.S_AXI_BREADY(s00_axi_bready),
|
|
|
|
.S_AXI_ARADDR(s00_axi_araddr),
|
|
|
|
.S_AXI_ARPROT(s00_axi_arprot),
|
|
|
|
.S_AXI_ARVALID(s00_axi_arvalid),
|
|
|
|
.S_AXI_ARREADY(s00_axi_arready),
|
|
|
|
.S_AXI_RDATA(s00_axi_rdata),
|
|
|
|
.S_AXI_RRESP(s00_axi_rresp),
|
|
|
|
.S_AXI_RVALID(s00_axi_rvalid),
|
|
|
|
.S_AXI_RREADY(s00_axi_rready)
|
|
|
|
);
|
|
|
|
|
|
|
|
// Add user logic here
|
|
|
|
wire [9:0] box_x1 = reg_x[9:0];
|
|
|
|
wire [9:0] box_x2 = reg_x[25:16];
|
|
|
|
wire [8:0] box_y1 = reg_y[8:0];
|
|
|
|
wire [8:0] box_y2 = reg_y[24:16];
|
|
|
|
wire [5:0] box_color = reg_color[5:0];
|
|
|
|
|
|
|
|
vgasquare display (
|
|
|
|
.PIXEL_CLK(I_PIXEL_CLK), // Pixel clock: 25Mhz (or 25.125MHz) for VGA
|
|
|
|
.RST_BTN(s00_axi_aresetn), // reset button
|
|
|
|
.box_x1(box_x1),
|
|
|
|
.box_x2(box_x2),
|
|
|
|
.box_y1(box_y1),
|
|
|
|
.box_y2(box_y2),
|
|
|
|
.box_color(box_color), //1 bit for each color Foreground and background
|
|
|
|
.VGA_HS(O_VGA_HS), // horizontal sync output
|
|
|
|
.VGA_VS(O_VGA_VS), // vertical sync output
|
|
|
|
.VGA_R(O_VGA_R), // 1-bit VGA red output
|
|
|
|
.VGA_G(O_VGA_G), // 1-bit VGA green output
|
|
|
|
.VGA_B(O_VGA_B) // 1-bit VGA blue output
|
|
|
|
);
|
|
|
|
// User logic ends
|
|
|
|
|
|
|
|
endmodule
|