| module Video ( |
| `ifdef USE_POWER_PINS |
| inout vccd1, // User area 1 1.8V supply |
| inout vssd1, // User area 1 digital ground |
| `endif |
| input wire wb_clk_i, |
| input wire wb_rst_i, |
| |
| // Wishbone Slave ports |
| input wire wb_stb_i, |
| input wire wb_cyc_i, |
| input wire wb_we_i, |
| input wire[3:0] wb_sel_i, |
| input wire[31:0] wb_data_i, |
| input wire[23:0] wb_adr_i, |
| output wire wb_ack_o, |
| output wire wb_stall_o, |
| output wire wb_error_o, |
| output wire[31:0] wb_data_o, |
| |
| // Video SRAM rw port |
| output wire sram_clk0, |
| output wire[3:0] sram_csb0, |
| output wire sram_web0, |
| output wire[3:0] sram_wmask0, |
| output wire[SRAM_ADDRESS_SIZE-1:0] sram_addr0, |
| output wire[31:0] sram_din0, |
| input wire[127:0] sram_dout0, |
| |
| // Video SRAM r port |
| output wire sram_clk1, |
| output wire[3:0] sram_csb1, |
| output wire[SRAM_ADDRESS_SIZE-1:0] sram_addr1, |
| input wire[127:0] sram_dout1, |
| |
| // VGA |
| //input wire vga_clk, |
| output wire[1:0] vga_r, |
| output wire[1:0] vga_g, |
| output wire[1:0] vga_b, |
| output wire vga_vsync, |
| output wire vga_hsync |
| ); |
| |
| localparam SRAM_ADDRESS_SIZE = 9; |
| |
| wire vga_clk = wb_clk_i; |
| |
| wire peripheralBus_we; |
| wire peripheralBus_oe; |
| wire peripheralBus_busy; |
| wire[23:0] peripheralBus_address; |
| wire[3:0] peripheralBus_byteSelect; |
| wire[31:0] peripheralBus_dataRead; |
| wire[31:0] peripheralBus_dataWrite; |
| |
| WBPeripheralBusInterface wbPeripheralBusInterface( |
| `ifdef USE_POWER_PINS |
| .vccd1(vccd1), // User area 1 1.8V power |
| .vssd1(vssd1), // User area 1 digital ground |
| `endif |
| .wb_clk_i(wb_clk_i), |
| .wb_rst_i(wb_rst_i), |
| .wb_stb_i(wb_stb_i), |
| .wb_cyc_i(wb_cyc_i), |
| .wb_we_i(wb_we_i), |
| .wb_sel_i(wb_sel_i), |
| .wb_data_i(wb_data_i), |
| .wb_adr_i(wb_adr_i), |
| .wb_ack_o(wb_ack_o), |
| .wb_stall_o(wb_stall_o), |
| .wb_error_o(wb_error_o), |
| .wb_data_o(wb_data_o), |
| .peripheralBus_we(peripheralBus_we), |
| .peripheralBus_oe(peripheralBus_oe), |
| .peripheralBus_busy(peripheralBus_busy), |
| .peripheralBus_address(peripheralBus_address), |
| .peripheralBus_byteSelect(peripheralBus_byteSelect), |
| .peripheralBus_dataRead(peripheralBus_dataRead), |
| .peripheralBus_dataWrite(peripheralBus_dataWrite)); |
| |
| wire[SRAM_ADDRESS_SIZE+3:0] vga_address; |
| wire[31:0] vga_data; |
| |
| wire videoMemoryBusBusy; |
| wire[31:0] videoMemoryDataRead; |
| wire videoMemoryRequestOutput; |
| VideoMemory videoMemory( |
| `ifdef USE_POWER_PINS |
| .vccd1(vccd1), // User area 1 1.8V power |
| .vssd1(vssd1), // User area 1 digital ground |
| `endif |
| .clk(wb_clk_i), |
| .rst(wb_rst_i), |
| .peripheralBus_we(peripheralBus_we), |
| .peripheralBus_oe(peripheralBus_oe), |
| .peripheralBus_busy(videoMemoryBusBusy), |
| .peripheralBus_address(peripheralBus_address), |
| .peripheralBus_byteSelect(peripheralBus_byteSelect), |
| .peripheralBus_dataRead(videoMemoryDataRead), |
| .peripheralBus_dataWrite(peripheralBus_dataWrite), |
| .requestOutput(videoMemoryRequestOutput), |
| .video_clk(vga_clk), |
| .video_address(vga_address), |
| .video_data(vga_data), |
| .sram_clk0(sram_clk0), |
| .sram_csb0(sram_csb0), |
| .sram_web0(sram_web0), |
| .sram_wmask0(sram_wmask0), |
| .sram_addr0(sram_addr0), |
| .sram_din0(sram_din0), |
| .sram_dout0(sram_dout0), |
| .sram_clk1(sram_clk1), |
| .sram_csb1(sram_csb1), |
| .sram_addr1(sram_addr1), |
| .sram_dout1(sram_dout1)); |
| |
| wire vgaBusBusy; |
| wire[31:0] vgaDataRead; |
| wire vgaRequestOutput; |
| VGA #(.ADDRESS_BITS(SRAM_ADDRESS_SIZE + 4)) vga( |
| `ifdef USE_POWER_PINS |
| .vccd1(vccd1), // User area 1 1.8V power |
| .vssd1(vssd1), // User area 1 digital ground |
| `endif |
| .clk(wb_clk_i), |
| .rst(wb_rst_i), |
| .peripheralBus_we(peripheralBus_we), |
| .peripheralBus_oe(peripheralBus_oe), |
| .peripheralBus_busy(vgaBusBusy), |
| .peripheralBus_address(peripheralBus_address), |
| .peripheralBus_byteSelect(peripheralBus_byteSelect), |
| .peripheralBus_dataRead(vgaDataRead), |
| .peripheralBus_dataWrite(peripheralBus_dataWrite), |
| .requestOutput(vgaRequestOutput), |
| .vga_clk(vga_clk), |
| .vga_address(vga_address), |
| .vga_data(vga_data), |
| .vga_r(vga_r), |
| .vga_g(vga_g), |
| .vga_b(vga_b), |
| .vga_vsync(vga_vsync), |
| .vga_hsync(vga_hsync)); |
| |
| assign peripheralBus_busy = videoMemoryBusBusy || vgaBusBusy; |
| assign peripheralBus_dataRead = videoMemoryRequestOutput ? videoMemoryDataRead : |
| vgaRequestOutput ? vgaDataRead : 32'b0; |
| |
| endmodule |