INST "ddr2_sdram_cont_i/dcm_module_inst/DCM_INST1/DCM_SP" LOC = DCM_X0Y2;
INST "ddr2_sdram_cont_i/dcm_module_inst/DCM_INST1/DCM_SP" LOC = DCM_X0Y1;
INST "dcm_DDR2_VGA_clk_i/dcm_VGA_clk_dcm/DCM_SP" LOC = DCM_X0Y2;
INST "dcm_DDR2_VGA_clk_i/dcm_DDR2_clk_dcm/DCM_SP" LOC = "DCM_X2Y3";
NET "sd_loop_in_IBUF"
ROUTE="{3;1;3s700afg484;df4ab136!-1;-70632;33392;S!0;-159;0!1;1612;-912!"
"1;1596;1056!1;1680;-1720!1;-1464;-3608!1;-1618;10040!1;-225;1797!1;-1632;"
"-10456!2;-3069;-3647!3;450;5392!3;4355;1359!4;4;-12032!4;4255;-597!5;"
"3927;-4329!5;0;-7000!6;-474;9200!6;178;6576!6;184;13320!7;-1185;4651!7;"
"-1867;-629!8;4111;-10997!8;192;-13688!9;0;-6876!9;3952;222!10;3905;-657!"
"11;2808;3082!11;2917;-5975!11;1152;657;L!11;1152;313;L!12;2123;3408;L!13;"
"-511;-4883!13;1168;-1715;L!13;1168;-1371;L!14;13605;-139!14;-447;-2703!"
"15;24;-6784!16;1099;79!17;-17;-7547!17;-652;-752!18;-658;-744!19;3905;"
"-657!20;1099;-97!21;2976;-3486!22;3935;-4073!22;-652;-752!23;3952;98!24;"
"1152;313;L!24;1152;657;L!25;1152;313;L!25;1152;657;L!26;-2848;-1044!27;"
"-2957;1261!31;-2953;1265!34;-8965;428;L!34;-8965;772;L!35;3935;-4073!36;"
"3935;-4073!37;6944;-24!38;3952;98!39;1099;79!40;1099;79!41;1152;313;L!41;"
"1152;657;L!42;6912;0!43;-2968;104!44;12173;-119!45;1099;79!46;1152;657;L!"
"46;1152;313;L!51;1352;-701;L!51;-2104;-1045;L!52;1352;-701;L!53;1176;"
"-1377;L!56;1152;657;L!56;1152;313;L!57;1152;657;L!57;1152;313;L!58;-2304;"
"313;L!58;1152;313;L!58;1152;657;L!58;-2304;657;L!59;1152;657;L!59;1152;"
"313;L!60;6944;-24!61;6944;-24!64;-2112;-1039;L!65;1160;651;L!65;1160;307;"
"L!66;-7565;776;L!66;-7565;432;L!67;15333;-139!84;1152;657;L!84;1152;313;L"
"!85;-2304;313;L!85;-2304;657;L!91;-7237;772;L!91;-7237;428;L!}";
// 02/20 @ 12:48:23
NET "ddr2_sdram_cont_i/read_write_io_inst/ddr2_cont_iob_inst/dqs_clk_node<0>"
ROUTE="{3;1;3s700afg484;c20d0b8b!-1;-70632;12888;S!0;-159;0!1;-161;-887!"
"2;-1291;-2737!3;-29;-8091!4;259;-695!5;-1703;-139!6;108;53;L!}";
// 02/20 @ 12:51:22
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<0>"
ROUTE="{3;1;3s700afg484;a5bd1784!-1;-70632;26072;S!0;-159;0!1;2447;-605!"
"2;4489;301!2;4489;645!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<1>"
ROUTE="{3;1;3s700afg484;751a0e0!-1;-70632;19640;S!0;-159;0!1;1696;1720!2;"
"1784;1376!2;1784;1032!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<2>"
ROUTE="{3;1;3s700afg484;89ffb99b!-1;-70632;6136;S!0;-159;0!1;1696;1720!2;"
"1784;1376!2;1784;1032!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<3>"
ROUTE="{3;1;3s700afg484;61a7f9cb!-1;-70632;9192;S!0;-159;0!1;2447;-605!2;"
"4489;645!2;4489;301!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<4>"
ROUTE="{3;1;3s700afg484;5a9ec78e!-1;-70632;9512;S!0;-159;0!1;1696;1720!2;"
"1784;1376!2;1784;1032!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<5>"
ROUTE="{3;1;3s700afg484;c3906147!-1;-70632;5816;S!0;-159;0!1;2447;-605!2;"
"4489;645!2;4489;301!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<6>"
ROUTE="{3;1;3s700afg484;3cdde0e5!-1;-70632;19320;S!0;-159;0!1;2447;-605!"
"2;4489;645!2;4489;301!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<7>"
ROUTE="{3;1;3s700afg484;48045bde!-1;-70632;26392;S!0;-159;0!1;1696;1968!"
"2;1784;1032!2;1784;1376!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<8>"
ROUTE="{3;1;3s700afg484;8152c779!-1;-70632;40144;S!0;-159;0!1;1696;1720!"
"2;1784;1376!2;1784;1032!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<9>"
ROUTE="{3;1;3s700afg484;bfa7b4d9!-1;-70632;53328;S!0;-159;0!1;1696;2040!"
"2;1784;1376!2;1784;1032!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<10>"
ROUTE="{3;1;3s700afg484;ace04032!-1;-70632;36448;S!0;-159;0!1;2447;-605!"
"2;4489;645!2;4489;301!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<11>"
ROUTE="{3;1;3s700afg484;fc333603!-1;-70632;49952;S!0;-159;0!1;2447;-605!"
"2;4489;645!2;4489;301!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<12>"
ROUTE="{3;1;3s700afg484;4ce19306!-1;-70632;50272;S!0;-159;0!1;1696;1720!"
"2;1784;1032!2;1784;1376!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<13>"
ROUTE="{3;1;3s700afg484;7f7f4c8c!-1;-70632;39824;S!0;-159;0!1;2447;-605!"
"2;4489;301!2;4489;645!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<14>"
ROUTE="{3;1;3s700afg484;10d3a509!-1;-70632;36768;S!0;-159;0!1;1696;1720!"
"2;1784;1032!2;1784;1376!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<15>"
ROUTE="{3;1;3s700afg484;473a4c3d!-1;-70632;53648;S!0;-159;0!1;2479;-949!"
"2;4457;661!3;0;8!3;0;-336!4;167;0;L!5;167;0;L!}";
INST "ddr2_sdram_cont_i/dcm_module_inst/DCM_INST1/DCM_SP" LOC = DCM_X0Y1;
INST "dcm_DDR2_VGA_clk_i/dcm_VGA_clk_dcm/DCM_SP" LOC = DCM_X0Y2;
INST "dcm_DDR2_VGA_clk_i/dcm_DDR2_clk_dcm/DCM_SP" LOC = "DCM_X2Y3";
NET "ddr2_dq[0]" IBUF_DELAY_VALUE = 1;
NET "ddr2_dq[1]" IBUF_DELAY_VALUE = 1;
NET "ddr2_dq[2]" IBUF_DELAY_VALUE = 1;
NET "ddr2_dq[3]" IBUF_DELAY_VALUE = 1;
NET "ddr2_dq[4]" IBUF_DELAY_VALUE = 1;
NET "ddr2_dq[5]" IBUF_DELAY_VALUE = 1;
NET "ddr2_dq[6]" IBUF_DELAY_VALUE = 1;
NET "ddr2_dq[7]" IBUF_DELAY_VALUE = 1;
NET "ddr2_dq[8]" IBUF_DELAY_VALUE = 1;
NET "ddr2_dq[9]" IBUF_DELAY_VALUE = 1;
NET "ddr2_dq[10]" IBUF_DELAY_VALUE = 1;
NET "ddr2_dq[11]" IBUF_DELAY_VALUE = 1;
NET "ddr2_dq[12]" IBUF_DELAY_VALUE = 1;
NET "ddr2_dq[13]" IBUF_DELAY_VALUE = 1;
NET "ddr2_dq[14]" IBUF_DELAY_VALUE = 1;
NET "ddr2_dq[15]" IBUF_DELAY_VALUE = 1;
#
NET "ddr2_dqs[0]" IBUF_DELAY_VALUE = 1;
# NET "sd_loop_in" IBUF_DELAY_VALUE = 1;
# sd_loop_in // 02/21 @ 20:52:31
NET "sd_loop_in_IBUF"
ROUTE="{3;1;3s700afg484;df4ab136!-1;-70632;33392;S!0;-159;0!1;1612;-912!"
"1;1596;1056!1;1680;-1720!1;-1464;-3608!1;-1618;10040!1;-225;1797!1;-1632;"
"-10456!2;-3069;-3647!3;450;5392!3;4355;1359!4;4;-12032!4;4255;-597!5;"
"3927;-4329!5;0;-7000!6;-474;9200!6;178;6576!6;184;13320!7;-1185;4651!7;"
"-1867;-629!8;4111;-10997!8;192;-13688!9;0;-6876!9;3952;222!10;3905;-657!"
"11;2808;3082!11;2917;-5975!11;1152;657;L!11;1152;313;L!12;2123;3408;L!13;"
"-511;-4883!13;1168;-1715;L!13;1168;-1371;L!14;13605;-139!14;-447;-2703!"
"15;24;-6784!16;1099;79!17;-17;-7547!17;-652;-752!18;-658;-744!19;3905;"
"-657!20;1099;-97!21;2976;-3486!22;3935;-4073!22;-652;-752!23;3952;98!24;"
"1152;313;L!24;1152;657;L!25;1152;313;L!25;1152;657;L!26;-2848;-1044!27;"
"-2957;1261!31;-2953;1265!34;-8965;428;L!34;-8965;772;L!35;3935;-4073!36;"
"3935;-4073!37;6944;-24!38;3952;98!39;1099;79!40;1099;79!41;1152;313;L!41;"
"1152;657;L!42;6912;0!43;-2968;104!44;12173;-119!45;1099;79!46;1152;657;L!"
"46;1152;313;L!51;1352;-701;L!51;-2104;-1045;L!52;1352;-701;L!53;1176;"
"-1377;L!56;1152;657;L!56;1152;313;L!57;1152;657;L!57;1152;313;L!58;-2304;"
"313;L!58;1152;313;L!58;1152;657;L!58;-2304;657;L!59;1152;657;L!59;1152;"
"313;L!60;6944;-24!61;6944;-24!64;-2112;-1039;L!65;1160;651;L!65;1160;307;"
"L!66;-7565;776;L!66;-7565;432;L!67;15333;-139!84;1152;657;L!84;1152;313;L"
"!85;-2304;313;L!85;-2304;657;L!91;-7237;772;L!91;-7237;428;L!}";
// 02/20 @ 12:51:22
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<0>"
ROUTE="{3;1;3s700afg484;a5bd1784!-1;-70632;26072;S!0;-159;0!1;2447;-605!"
"2;4489;301!2;4489;645!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<1>"
ROUTE="{3;1;3s700afg484;751a0e0!-1;-70632;19640;S!0;-159;0!1;1696;1720!2;"
"1784;1376!2;1784;1032!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<2>"
ROUTE="{3;1;3s700afg484;89ffb99b!-1;-70632;6136;S!0;-159;0!1;1696;1720!2;"
"1784;1376!2;1784;1032!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<3>"
ROUTE="{3;1;3s700afg484;61a7f9cb!-1;-70632;9192;S!0;-159;0!1;2447;-605!2;"
"4489;645!2;4489;301!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<4>"
ROUTE="{3;1;3s700afg484;5a9ec78e!-1;-70632;9512;S!0;-159;0!1;1696;1720!2;"
"1784;1376!2;1784;1032!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<5>"
ROUTE="{3;1;3s700afg484;c3906147!-1;-70632;5816;S!0;-159;0!1;2447;-605!2;"
"4489;645!2;4489;301!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<6>"
ROUTE="{3;1;3s700afg484;3cdde0e5!-1;-70632;19320;S!0;-159;0!1;2447;-605!"
"2;4489;645!2;4489;301!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<7>"
ROUTE="{3;1;3s700afg484;48045bde!-1;-70632;26392;S!0;-159;0!1;1696;1968!"
"2;1784;1032!2;1784;1376!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<8>"
ROUTE="{3;1;3s700afg484;8152c779!-1;-70632;40144;S!0;-159;0!1;1696;1720!"
"2;1784;1376!2;1784;1032!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<9>"
ROUTE="{3;1;3s700afg484;bfa7b4d9!-1;-70632;53328;S!0;-159;0!1;1696;2040!"
"2;1784;1376!2;1784;1032!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<10>"
ROUTE="{3;1;3s700afg484;ace04032!-1;-70632;36448;S!0;-159;0!1;2447;-605!"
"2;4489;645!2;4489;301!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<11>"
ROUTE="{3;1;3s700afg484;fc333603!-1;-70632;49952;S!0;-159;0!1;2447;-605!"
"2;4489;645!2;4489;301!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<12>"
ROUTE="{3;1;3s700afg484;4ce19306!-1;-70632;50272;S!0;-159;0!1;1696;1720!"
"2;1784;1032!2;1784;1376!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<13>"
ROUTE="{3;1;3s700afg484;7f7f4c8c!-1;-70632;39824;S!0;-159;0!1;2447;-605!"
"2;4489;301!2;4489;645!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<14>"
ROUTE="{3;1;3s700afg484;10d3a509!-1;-70632;36768;S!0;-159;0!1;1696;1720!"
"2;1784;1032!2;1784;1376!3;167;0;L!4;167;0;L!}";
NET "ddr2_sdram_cont_i/read_write_io_inst/dq_data<15>"
ROUTE="{3;1;3s700afg484;473a4c3d!-1;-70632;53648;S!0;-159;0!1;2479;-949!"
"2;4457;661!3;0;8!3;0;-336!4;167;0;L!5;167;0;L!}";
// 02/20 @ 12:48:23
NET "ddr2_sdram_cont_i/read_write_io_inst/ddr2_cont_iob_inst/dqs_clk_node<0>"
ROUTE="{3;1;3s700afg484;c20d0b8b!-1;-70632;12888;S!0;-159;0!1;-161;-887!"
"2;-1291;-2737!3;-29;-8091!4;259;-695!5;-1703;-139!6;108;53;L!}";
INST "ddr2_sdram_cont_i/read_write_io_inst/ddr2_cont_iob_inst/BUFG_inst" LOC = BUFGMUX_X0Y5;
PIN "dcm_DDR2_VGA_clk_i/dcm_DDR2_clk_dcm/DCM_SP.CLKFX" CLOCK_DEDICATED_ROUTE = FALSE;
// テスト回路
always @(posedge clk_vga) begin
if (reset_vga)
start_vram_data <= 16'd0;
else begin
if (h_count==1 && v_count==0 && pixel_afifo_rd_en)
start_vram_data <= vram_data_out;
end
end
always @(posedge clk_vga) begin
if (reset_vga)
diff_start_data <= 1'b0;
else begin
if (h_count==1 && v_count==0 && pixel_afifo_rd_en) begin
if (start_vram_data==vram_data_out)
diff_start_data <= 1'b1;
else
diff_start_data <= 1'b0;
end
end
end
assign start_vram_data_out = start_vram_data[6:0];
// Bitmap_VGA_Controller_top.v
// Bitmap_VGA_Controllerをテストするトップファイル
module Bitmap_VGA_Controller_top(SYS_CLK, SYS_RST, red_out, green_out, blue_out, hsyncx, vsyncx);
`include "Address_Map_Define.vh"
input wire SYS_CLK;
input wire SYS_RST;
output wire [3:0] red_out;
output wire [3:0] green_out;
output wire [3:0] blue_out;
output wire hsyncx;
output wire vsyncx;
wire clk_vga; // 65MHz クロック入力(VGA用)
wire clk_ddr2; // 150MHz クロック入力(DDR2へのインターフェース用)
wire reset_vga; // clk_vga用リセット
wire reset_ddr2; // clk_ddr2リセット
wire [31:0] vram_start_addr; // バイトアドレス
wire vram_request; // VRAMへのRead要求。アービタへ
wire vram_grant; // VRAMへのRead許可。アービタから
wire [31:0] vram_address; // バイトアドレス
wire read_write;
wire vram_req_we; // VRAM へのRead要求のWrite Enable
wire vram_addr_fifo_full; // VRAMのRead要求用FIFOのFULL
wire [31:0] vram_data_in;
reg vram_data_valid;
wire afifo_overflow; // 非同期FIFO のオーバーフロー・エラー
wire afifo_underflow; // 非同期FIFO
wire clk_ddr2_locked, clk_vga_locked;
reg [15:0] vram_data_in1, vram_data_in2;
reg vram_req_we_1d;
dcm_DDR2_VGA_clk dcm_DDR2_VGA_clk_i(
.sysclk(SYS_CLK),
.reset(SYS_RST),
.clk_ddr2(clk_ddr2),
.dcm_ddr2_locked(clk_ddr2_locked),
.clk_vga(clk_vga),
.dcm_vga_locked(clk_vga_locked)
);
assign reset_vga = SYS_RST | ~clk_vga_locked;
assign reset_ddr2 = SYS_RST | ~ clk_ddr2_locked;
Bitmap_VGA_Controller Bitmap_VGA_Cntrler_i(
.clk_vga(clk_vga),
.clk_ddr2(clk_ddr2),
.reset_vga(reset_vga),
.reset_ddr2(reset_ddr2),
.vram_start_addr(VRAM_START_ADDRESS),
.vram_request(vram_request),
.vram_grant(vram_grant),
.vram_address(vram_address),
.read_write(read_write),
.vram_req_we(vram_req_we),
.vram_addr_fifo_full(vram_addr_fifo_full),
.vram_data_in(vram_data_in),
.vram_data_valid(vram_data_valid),
.red_out(red_out),
.green_out(green_out),
.blue_out(blue_out),
.hsyncx(hsyncx),
.vsyncx(vsyncx),
.afifo_overflow(afifo_overflow),
.afifo_underflow(afifo_underflow)
);
assign vram_addr_fifo_full = 1'b0;
assign vram_grant = 1'b1;
always @(posedge clk_ddr2) begin // vram_req_weを1クロック遅延する
if (reset_ddr2)
vram_req_we_1d <= 1'b0;
else
vram_req_we_1d <= vram_req_we;
end
always @(posedge clk_ddr2) begin
if (reset_ddr2) begin
vram_data_in1 <= 16'h0000;
vram_data_in2 <= 16'h0fff;
end else begin
if (vram_req_we || vram_req_we_1d) begin // 1リクエストで2つデータを出力する
if (vram_address==VRAM_START_ADDRESS) begin
vram_data_in1 <= 16'h0000;
vram_data_in2 <= 16'h0000;
end else begin
vram_data_in1 <= vram_data_in1 + 16'd1;
vram_data_in2 <= vram_data_in2 + 16'd1;
end
end
end
end
assign vram_data_in = {vram_data_in1, vram_data_in2};
always @(posedge clk_ddr2) begin
if (reset_ddr2)
vram_data_valid <= 1'b0;
else begin
if (vram_req_we || vram_req_we_1d) // 1リクエストで2つデータを出力する
vram_data_valid <= 1'b1;
else
vram_data_valid <= 1'b0;
end
end
endmodule
`default_nettype wire
PIN "dcm_DDR2_VGA_clk_i/dcm_VGA_clk_dcm.CLKFX" TNM = VGA_CLK_OUTPUT;
PIN "dcm_DDR2_VGA_clk_i/dcm_DDR2_clk_dcm.CLKFX" TNM = DDR2_CLK_OUTPUT;
TIMESPEC TS_VGA2DDR2_CLK_TIG = FROM "VGA_CLK_OUTPUT" TO "DDR2_CLK_OUTPUT" TIG;
TIMESPEC TS_DDR22VGA_CLK_TIG = FROM "DDR2_CLK_OUTPUT" TO "VGA_CLK_OUTPUT" TIG;
parameter V_ACTIVE_VIDEO = 2;
parameter V_FRONT_PORCH = 0;
parameter V_SYNC_PULSE = 1;
parameter V_BACK_PORCH = 0;
// parameter V_ACTIVE_VIDEO = 768;
// parameter V_FRONT_PORCH = 3;
// parameter V_SYNC_PULSE = 6;
// parameter V_BACK_PORCH = 29;
INST "ddr2_sdram_cont_i/read_write_io_inst/rddata_afifo_inst/DQS2intclk_FIFO_FALL/DPRAM_GEN[15].RAM16X1D_inst" LOC = SLICE_X2Y79;
INST "ddr2_sdram_cont_i/read_write_io_inst/rddata_afifo_inst/DQS2intclk_FIFO_FALL/DPRAM_GEN[14].RAM16X1D_inst" LOC = SLICE_X0Y71;
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
- | - | - | - | 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 | - |