From beabfbb698ea480351d0efef08a212f2655138fd Mon Sep 17 00:00:00 2001 From: Anton Gale Date: Sat, 25 Mar 2023 17:16:33 -0500 Subject: [PATCH] Removed independent out of phase sprite clock --- Arcade-Exerion.sv | 22 ++----- rtl/excore.v | 146 +++++++-------------------------------------- rtl/pll.qip | 30 +++++----- rtl/pll.v | 4 +- rtl/pll/pll_0002.v | 11 ++-- 5 files changed, 46 insertions(+), 167 deletions(-) diff --git a/Arcade-Exerion.sv b/Arcade-Exerion.sv index 305193f..4a29ebf 100644 --- a/Arcade-Exerion.sv +++ b/Arcade-Exerion.sv @@ -327,17 +327,7 @@ hps_io #(.CONF_STR(CONF_STR)) hps_io .ioctl_index(ioctl_index), .ioctl_wait(ioctl_wait), - //SD RAM implementation? .sdram_sz(sdram_sz), - //.sd_lba(sd_lba), - //.sd_rd(sd_rd), - //.sd_wr(sd_wr), - //.sd_ack(sd_ack), - //.sd_buff_addr(sd_buff_addr), - //.sd_buff_dout(sd_buff_dout), - //.sd_buff_din(sd_buff_din), - //.sd_buff_wr(sd_buff_wr), - .joystick_0(joystick_0) ); @@ -352,10 +342,10 @@ wire clk_vid;//=clkm_20MHZ; pll pll( .refclk(CLK_50M), // refclk.clk FPGA_CLK1_50 .rst(0), // reset.reset - .outclk_0(clkm_20MHZ), // outclk0.clk - .outclk_1(clk_vid), // outclk1.clk - .outclk_2(clk_53p28), // outclk2.clk - .outclk_3(clkSP_20MHz) + .outclk_0(clkm_20MHZ), // outclk0.clk = 20Mhz + .outclk_1(clk_vid), // outclk1.clk = 40Mhz + .outclk_2(clk_53p28), // outclk2.clk = 53.28Mhz + .outclk_3() ); wire m_right = joystick_0[0]; @@ -374,7 +364,6 @@ wire m_pause = joystick_0[9]; always @(posedge clk_vid) begin reg [1:0] div; div <= div + (forced_scandoubler ? 2'd1 : 2'd2); - //ce_pix <= !div; end /////////////////// VIDEO //////////////////// @@ -384,7 +373,7 @@ wire hs, vs; wire [2:0] r; wire [2:0] g; wire [1:0] b; -//wire [7:0] rgb = {r[2:0],g[2:0],b[1:0]};//23:0 + wire [7:0] rgb = {rgb_out[7:5],rgb_out[4:2],rgb_out[1:0]};//23:0 wire no_rotate = status[2] | direct_video; @@ -458,7 +447,6 @@ assign LED_USER = ioctl_download; exerion_fpga excore( .clkm_20MHZ(clkm_20MHZ), - .clkSP_20MHz(clkSP_20MHz), .clkaudio(clk_53p28), .RED(r), .GREEN(g), diff --git a/rtl/excore.v b/rtl/excore.v index b5d2fd2..f013900 100644 --- a/rtl/excore.v +++ b/rtl/excore.v @@ -14,7 +14,6 @@ module exerion_fpga( input clkm_20MHZ, - input clkSP_20MHz, input clkaudio, output [2:0] RED, //from fpga core to sv output [2:0] GREEN, //from fpga core to sv @@ -32,7 +31,7 @@ module exerion_fpga( input [24:0] dn_addr, input dn_wr, input [7:0] dn_data, - output [15:0] audio_l, //from jt49_1 .sound + output [15:0] audio_l, //from jt49_1 .sound output [15:0] audio_r, //from jt49_2 .sound input [15:0] hs_address, output [7:0] hs_data_out, @@ -43,8 +42,6 @@ module exerion_fpga( //pixel counters reg [8:0] pixH = 9'b000000000; reg [7:0] pixV = 8'b00000000; -//reg [8:0] pixH = 9'b000000000; -//reg [7:0] pixV = 8'b00000000; wire [8:0] rpixelbusH; wire [7:0] rpixelbusV; @@ -67,8 +64,7 @@ wire ic2b_1q; wire ic2b_2nq; wire clk_phase2; -wire clk1_10MHZ,clk2_6MHZ,clk2_6AMHZ,clk3_3MHZ,clk4_6BMHZ; -wire spclk1_10MHZ,spclk2_6MHZ,spclk3_3MHZ,spclk4_6BMHZ; +wire clk1_10MHZ,clk2_6MHZ,clk2_6AMHZ,clk3_3MHZ; wire PUR = 1'b1; wire H4CA; @@ -91,64 +87,13 @@ wire [15:0] Z80B_addrbus; wire [7:0] Z80B_databus_in; wire [7:0] Z80B_databus_out; -//duplicate clocks for each layer -//tile & main CPU clock + +//clocks wire U2A_Aq,U2A_Anq,U2A_Aqi; wire U2A_Bq,U2A_Bnq,U2A_Bqi; wire U2B_Aq,U2B_Anq,U2B_Aqi; wire U2B_Bq,U2B_Bnq,U2B_Bqi; -//background -wire U3A_Aq,U3A_Anq,U3A_Aqi; -wire U3A_Bq,U3A_Bnq,U3A_Bqi; -wire U3B_Aq,U3B_Anq,U3B_Aqi; -wire U3B_Bq,U3B_Bnq,U3B_Bqi; - -//sprites -wire spU2A_Aq,spU2A_Anq,spU2A_Aqi; -wire spU2A_Bq,spU2A_Bnq,spU2A_Bqi; -wire spU2B_Aq,spU2B_Anq,spU2B_Aqi; - -/*ls107 spU2A_B( - .clear(PUR), - .clk(clkSP_20MHz), - .j(spU2A_Anq|!PUR), - .k(spU2A_Anq|!PUR), - .q(spU2A_Bq), - .qnot(spU2A_Bnq), - .q_immediate(spU2A_Bqi) -); - -ls107 spU2A_A( - .clear(PUR), - .clk(clkSP_20MHz), - .j(spU2A_Bq), - .k(PUR), - .q(spU2A_Aq), - .qnot(spU2A_Anq), - .q_immediate(spU2A_Aqi) -); - - -ls107 spU2B_A( - .clear(PUR), - .clk(clkSP_20MHz), - .j(PUR), - .k(PUR), - .q(spU2B_Aq), - .qnot(spU2B_Anq), - .q_immediate(spU2B_Aqi) -); - -buf (spclk1_10MHZ,spU2B_Aq); -not (spclk2_6MHZ,spU2A_Aq); -buf (spclk4_6BMHZ,spU2A_Bq); -*/ - -buf (spclk1_10MHZ,U2B_Aq); -not (spclk2_6MHZ,U2A_Aq); -buf (spclk4_6BMHZ,U2A_Bq); - ls107 U2A_B( .clear(PUR), .clk(clkm_20MHZ), @@ -189,18 +134,14 @@ ls107 U2B_A( .q_immediate(U2B_Aqi) ); -buf (clk1_10MHZ,U2B_Aq); -not (clk2_6MHZ,U2A_Aq); -buf (clk3_3MHZ,U2B_Bnq); -buf (clk4_6BMHZ,U2A_Bq); - +buf (clk1_10MHZ,U2B_Aq); //10MHz Clock +not (clk2_6MHZ,U2A_Aq); //6.66Mhz Clock +buf (clk3_3MHZ,U2B_Bnq); //3.33Mhz Clock wire Z80_MREQ,Z80_WR,Z80_RD; wire Z80B_MREQ,Z80B_WR,Z80B_RD; reg Z80_DO_En; -//wire clk2_6MHZ, clk3_3MHZ; -//wire clk2_6MHZ_1,clk2_6MHZ_2; //coin input wire nCOIN; @@ -598,7 +539,7 @@ wire [3:0] ZC; //select layer with priority - always @(posedge spclk2_6MHZ) begin + always @(posedge clk2_6MHZ) begin //equivalent of VID_B. If the 5th bit is used the upper part of the pallet ROM is //utilized and the sprite layer is selected. sp_clr_addr <= (ZB[3:0]) ? {1'b1,ZB[3:0]} : 5'b00000; @@ -633,8 +574,6 @@ prom6331_E1 UE1( .q({BLUE,GREEN,RED}) ); -reg rVGA_HS; -reg rVGA_VS; wire rSSEL; wire r2UP; //flips the screen - removed logic to help with debugging @@ -659,32 +598,11 @@ reg [7:0] Z80A_IO2; always @(posedge IO2) Z80A_IO2 = Z80A_databus_out; -/* -wire [8:0] pixHcntz; -wire [7:0] pixVcntz; -assign pixHcntz=pixH+9'd1; -assign pixVcntz=pixV+8'd1; - -always @(posedge spclk2_6MHZ) begin - - //simplified pixel clock counter. The horizontal counts from 88 to 511, the vertical counts from 0 to 255 - if (pixH==9'b111111111) - begin - pixH <= 9'b00101100z; - pixV <= pixVcntz;//pixVcnt+1; - end - else pixH <= pixHcntz; - -end -*/ - reg spnH4CA,spnH8CA; assign pixHcntz=pixH+9'd1; assign pixVcntz=pixV+8'd1; always @(posedge clk2_6MHZ) begin - - //simplified pixel clock counter. The horizontal counts from 88 to 511, the vertical counts from 0 to 255 if (pixH==9'b111111111) begin @@ -693,11 +611,8 @@ always @(posedge clk2_6MHZ) begin end else pixH <= pixHcntz; - rVGA_HS <= !U9R_Q5; //horizontal sync - rVGA_VS <= ((!(&pixV[7:3]))|pixV[2]); //vertical sync spnH4CA<=~&pixH[4:1]; spnH8CA<=~&pixH[8:5]; - end assign rSSEL = U9R_Q4|nVDSP; //used to load the per line memory location for the background layer @@ -755,7 +670,7 @@ wire [7:0] sprom_data; eprom_5 prom_SPRITE ( .ADDR({CHDN,CHLF,sROM_A11,sROM_A10,sROM_A9,sum4,sum3,sum2,sum1,sROM_A4,sROM_A3,sROM_A2,sROM_A1,sROM_A0}),// - .CLK(clkm_20MHZ),//clkSP_20MHz + .CLK(clkm_20MHZ),// .DATA(sprom_data),// .ADDR_DL(dn_addr), .CLK_DL(clkm_20MHZ),// @@ -803,9 +718,9 @@ wire U9H_d; assign U9H_d = U11J_2|U11J_1; -always @(posedge spclk1_10MHZ) U9H_A_nq <= ~U9H_d; +always @(posedge clk1_10MHZ) U9H_A_nq <= ~U9H_d; -always @(posedge spclk1_10MHZ) begin +always @(posedge clk1_10MHZ) begin spbitdata_11 <= (pixV[0]) ? 4'b0000 : U10H_data; spbitdata_10 <= (pixV[0]) ? U10H_data :4'b0000 ; end @@ -866,36 +781,18 @@ reg sp10_UD,sp10_nLD,sp10_CK,sp10_WE; reg sp11_UD,sp11_nLD,sp11_CK,sp11_WE; //sprite ram bit selection logic - U11E feeds the _10 bus -//always @(posedge clkm_20MHZ) begin -// if (pixV[0]) -// begin always @(*) begin - sp10_WE <= pixV[0] ? (spclk1_10MHZ|U9H_A_nq|U9F_A_q) : spclk2_6MHZ; - sp10_CK <= pixV[0] ? (spclk1_10MHZ|U9F_B_nq|U9F_A_q) : spclk2_6MHZ; + sp10_WE <= pixV[0] ? (clk1_10MHZ|U9H_A_nq|U9F_A_q) : clk2_6MHZ; + sp10_CK <= pixV[0] ? (clk1_10MHZ|U9F_B_nq|U9F_A_q) : clk2_6MHZ; sp10_nLD <= pixV[0] ? U10nRCO : 1'b1; - sp11_WE <= pixV[0] ? spclk2_6MHZ : (spclk1_10MHZ|U9H_A_nq|U9F_A_q); - sp11_CK <= pixV[0] ? spclk2_6MHZ : (spclk1_10MHZ|U9F_B_nq|U9F_A_q); + sp11_WE <= pixV[0] ? clk2_6MHZ : (clk1_10MHZ|U9H_A_nq|U9F_A_q); + sp11_CK <= pixV[0] ? clk2_6MHZ : (clk1_10MHZ|U9F_B_nq|U9F_A_q); sp11_nLD <= pixV[0] ? 1'b1 : U10nRCO; sp10_UD <= 1'b1; //( rpixelbusV[0]) ? 1'b1 : nr2UP; sp11_UD <= 1'b1; //(!rpixelbusV[0]) ? 1'b1 : nr2UP; end -// end -// else -// begin -// sp10_WE <= spclk2_6MHZ; -// sp10_CK <= spclk2_6MHZ; -// sp10_nLD <= 1'b1; -// sp11_WE <= (spclk1_10MHZ|U9H_A_nq|U9F_A_q); -// sp11_CK <= (spclk1_10MHZ|U9F_B_nq|U9F_A_q); -// sp11_nLD <= U10nRCO; - -// sp10_UD <= 1'b1; //( rpixelbusV[0]) ? 1'b1 : nr2UP; -// sp11_UD <= 1'b1; //(!rpixelbusV[0]) ? 1'b1 : nr2UP; -// end -//end - reg [8:0] spramaddrb_10_cnt; reg [8:0] spramaddrb_10_up; @@ -911,9 +808,9 @@ always @(posedge sp11_CK) spramaddrb_11_cnt = spramaddrb_11_up; wire [3:0] spram_out_10; wire [3:0] spram_out_11; -always @(posedge spclk2_6MHZ) {ZB} <= (pixV[0]) ? {spram_out_11} : {spram_out_10}; //U9A +always @(posedge clk2_6MHZ) {ZB} <= (pixV[0]) ? {spram_out_11} : {spram_out_10}; //U9A -always @(negedge spclk1_10MHZ) begin +always @(negedge clk1_10MHZ) begin U10nRCO<=!(spramaddr_cnt[0]&spramaddr_cnt[1]&spramaddr_cnt[2]&spramaddr_cnt[3]); end @@ -921,14 +818,14 @@ wire P4,P3,P2,P1; wire U10U_Q4,U10U_Q5,U10U_Q6,U10U_Q7; ls138x U10U( //#(.WIDTH_OUT(8), .DELAY_RISE(0), .DELAY_FALL(0)) - .nE1(spclk1_10MHZ), // + .nE1(clk1_10MHZ), // .nE2(spramaddr_cnt[0]), // .E3(spramaddr_cnt[1]), // .A({1'b0,spramaddr_cnt[3:2]}), // .Y({U10U_Q7,U10U_Q6,U10U_Q5,U10U_Q4,P4,P3,P2,P1}) ); -always @(posedge spclk1_10MHZ) begin +always @(posedge clk1_10MHZ) begin //U11H - 161 counter that increments on the 10Mhz clock and is reset to 0 by P4, this can be a simple add counter //U10J - Takes the output of U11H and switches the output based on signal 'BIG2' @@ -1405,8 +1302,7 @@ m2511_ram_4 sprites_11( ); // ****** FINAL 7-BIT ANALOGUE OUTPUT ******* - -assign H_SYNC = rVGA_HS; -assign V_SYNC = rVGA_VS; +assign H_SYNC = !U9R_Q5; //horizontal sync +assign V_SYNC = ((!(&pixV[7:3]))|pixV[2]); //vertical sync endmodule diff --git a/rtl/pll.qip b/rtl/pll.qip index ef0abe8..fa22d4a 100644 --- a/rtl/pll.qip +++ b/rtl/pll.qip @@ -35,17 +35,17 @@ set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAM set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "b3BlcmF0aW9uX21vZGU=::ZGlyZWN0::b3BlcmF0aW9uX21vZGU=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3VzZV9sb2NrZWQ=::dHJ1ZQ==::RW5hYmxlIGxvY2tlZCBvdXRwdXQgcG9ydA==" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2VuX2Fkdl9wYXJhbXM=::ZmFsc2U=::RW5hYmxlIHBoeXNpY2FsIG91dHB1dCBjbG9jayBwYXJhbWV0ZXJz" -set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX251bWJlcl9vZl9jbG9ja3M=::NA==::TnVtYmVyIE9mIENsb2Nrcw==" -set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "bnVtYmVyX29mX2Nsb2Nrcw==::NA==::bnVtYmVyX29mX2Nsb2Nrcw==" +set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX251bWJlcl9vZl9jbG9ja3M=::Mw==::TnVtYmVyIE9mIENsb2Nrcw==" +set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "bnVtYmVyX29mX2Nsb2Nrcw==::Mw==::bnVtYmVyX29mX2Nsb2Nrcw==" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX211bHRpcGx5X2ZhY3Rvcg==::MTM=::TXVsdGlwbHkgRmFjdG9yIChNLUNvdW50ZXIp" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2ZyYWNfbXVsdGlwbHlfZmFjdG9y::MQ==::RnJhY3Rpb25hbCBNdWx0aXBseSBGYWN0b3IgKEsp" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3Jfbg==::MQ==::RGl2aWRlIEZhY3RvciAoTi1Db3VudGVyKQ==" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjA=::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3kw::MTkuOTY4::RGVzaXJlZCBGcmVxdWVuY3k=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzA=::MTA=::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" -set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3Iw::Mjg=::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" -set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjA=::MzIzODA2MTc0NA==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" -set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMA==::NzI=::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3Iw::OQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjA=::MjUxMTAwOTY4MA==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMA==::MjQ=::QWN0dWFsIERpdmlkZSBGYWN0b3I=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5MA==::MTAuMDc5OTk5IE1Ieg==::QWN0dWFsIEZyZXF1ZW5jeQ==" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMA==::ZGVncmVlcw==::UGhhc2UgU2hpZnQgdW5pdHM=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0MA==::MTI1MDAw::UGhhc2UgU2hpZnQ=" @@ -55,9 +55,9 @@ set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAM set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjE=::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3kx::NDAuMA==::RGVzaXJlZCBGcmVxdWVuY3k=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzE=::MTA=::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" -set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3Ix::Mjg=::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" -set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjE=::MzIzODA2MTc0NA==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" -set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMQ==::MzY=::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3Ix::OQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjE=::MjUxMTAwOTY4MA==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMQ==::MTI=::QWN0dWFsIERpdmlkZSBGYWN0b3I=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5MQ==::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMQ==::ZGVncmVlcw==::UGhhc2UgU2hpZnQgdW5pdHM=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0MQ==::MA==::UGhhc2UgU2hpZnQ=" @@ -67,9 +67,9 @@ set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAM set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2Nhc2NhZGVfY291bnRlcjI=::ZmFsc2U=::TWFrZSB0aGlzIGEgY2FzY2FkZSBjb3VudGVy" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX291dHB1dF9jbG9ja19mcmVxdWVuY3ky::NTMuMjg=::RGVzaXJlZCBGcmVxdWVuY3k=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzI=::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ==" -set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3Iy::Mjg=::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" -set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjI=::MzIzODA2MTc0NA==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" -set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMg==::Mjc=::QWN0dWFsIERpdmlkZSBGYWN0b3I=" +set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3Iy::OQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg==" +set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjI=::MjUxMTAwOTY4MA==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ==" +set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMg==::OQ==::QWN0dWFsIERpdmlkZSBGYWN0b3I=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5Mg==::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ==" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMg==::ZGVncmVlcw==::UGhhc2UgU2hpZnQgdW5pdHM=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0Mg==::MA==::UGhhc2UgU2hpZnQ=" @@ -265,8 +265,8 @@ set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAM set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTI=::NTMuMjQ4MDAwIE1Ieg==::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTI=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQy::MCBwcw==::cGhhc2Vfc2hpZnQy" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTI=::NTA=::ZHV0eV9jeWNsZTI=" -set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTM=::MTkuOTY4MDAwIE1Ieg==::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTM=" -set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQz::Mzg5NTEgcHM=::cGhhc2Vfc2hpZnQz" +set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTM=::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTM=" +set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQz::MCBwcw==::cGhhc2Vfc2hpZnQz" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTM=::NTA=::ZHV0eV9jeWNsZTM=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTQ=::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTQ=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQ0::MCBwcw==::cGhhc2Vfc2hpZnQ0" @@ -317,8 +317,8 @@ set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAM set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2VuX3Bob3V0X3BvcnRz::ZmFsc2U=::RW5hYmxlIGFjY2VzcyB0byBQTEwgRFBBIG91dHB1dCBwb3J0" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "cGxsX3R5cGU=::R2VuZXJhbA==::UExMIFRZUEU=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "cGxsX3N1YnR5cGU=::R2VuZXJhbA==::UExMIFNVQlRZUEU=" -set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BhcmFtZXRlcl9saXN0::TS1Db3VudGVyIEhpIERpdmlkZSxNLUNvdW50ZXIgTG93IERpdmlkZSxOLUNvdW50ZXIgSGkgRGl2aWRlLE4tQ291bnRlciBMb3cgRGl2aWRlLE0tQ291bnRlciBCeXBhc3MgRW5hYmxlLE4tQ291bnRlciBCeXBhc3MgRW5hYmxlLE0tQ291bnRlciBPZGQgRGl2aWRlIEVuYWJsZSxOLUNvdW50ZXIgT2RkIERpdmlkZSBFbmFibGUsQy1Db3VudGVyLTAgSGkgRGl2aWRlLEMtQ291bnRlci0wIExvdyBEaXZpZGUsQy1Db3VudGVyLTAgQ29hcnNlIFBoYXNlIFNoaWZ0LEMtQ291bnRlci0wIFZDTyBQaGFzZSBUYXAsQy1Db3VudGVyLTAgSW5wdXQgU291cmNlLEMtQ291bnRlci0wIEJ5cGFzcyBFbmFibGUsQy1Db3VudGVyLTAgT2RkIERpdmlkZSBFbmFibGUsQy1Db3VudGVyLTEgSGkgRGl2aWRlLEMtQ291bnRlci0xIExvdyBEaXZpZGUsQy1Db3VudGVyLTEgQ29hcnNlIFBoYXNlIFNoaWZ0LEMtQ291bnRlci0xIFZDTyBQaGFzZSBUYXAsQy1Db3VudGVyLTEgSW5wdXQgU291cmNlLEMtQ291bnRlci0xIEJ5cGFzcyBFbmFibGUsQy1Db3VudGVyLTEgT2RkIERpdmlkZSBFbmFibGUsQy1Db3VudGVyLTIgSGkgRGl2aWRlLEMtQ291bnRlci0yIExvdyBEaXZpZGUsQy1Db3VudGVyLTIgQ29hcnNlIFBoYXNlIFNoaWZ0LEMtQ291bnRlci0yIFZDTyBQaGFzZSBUYXAsQy1Db3VudGVyLTIgSW5wdXQgU291cmNlLEMtQ291bnRlci0yIEJ5cGFzcyBFbmFibGUsQy1Db3VudGVyLTIgT2RkIERpdmlkZSBFbmFibGUsQy1Db3VudGVyLTMgSGkgRGl2aWRlLEMtQ291bnRlci0zIExvdyBEaXZpZGUsQy1Db3VudGVyLTMgQ29hcnNlIFBoYXNlIFNoaWZ0LEMtQ291bnRlci0zIFZDTyBQaGFzZSBUYXAsQy1Db3VudGVyLTMgSW5wdXQgU291cmNlLEMtQ291bnRlci0zIEJ5cGFzcyBFbmFibGUsQy1Db3VudGVyLTMgT2RkIERpdmlkZSBFbmFibGUsVkNPIFBvc3QgRGl2aWRlIENvdW50ZXIgRW5hYmxlLENoYXJnZSBQdW1wIGN1cnJlbnQgKHVBKSxMb29wIEZpbHRlciBCYW5kd2lkdGggUmVzaXN0b3IgKE9obXMpICxQTEwgT3V0cHV0IFZDTyBGcmVxdWVuY3ksSy1GcmFjdGlvbmFsIERpdmlzaW9uIFZhbHVlIChEU00pLEZlZWRiYWNrIENsb2NrIFR5cGUsRmVlZGJhY2sgQ2xvY2sgTVVYIDEsRmVlZGJhY2sgQ2xvY2sgTVVYIDIsTSBDb3VudGVyIFNvdXJjZSBNVVgsUExMIEF1dG8gUmVzZXQ=::UGFyYW1ldGVyIE5hbWVz" -set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BhcmFtZXRlcl92YWx1ZXM=::MTQsMTQsMjU2LDI1NixmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLDM2LDM2LDEsMCxwaF9tdXhfY2xrLGZhbHNlLGZhbHNlLDE4LDE4LDEsMCxwaF9tdXhfY2xrLGZhbHNlLGZhbHNlLDE0LDEzLDEsMCxwaF9tdXhfY2xrLGZhbHNlLHRydWUsMzYsMzYsNTcsMCxwaF9tdXhfY2xrLGZhbHNlLGZhbHNlLDEsMjAsNDAwMCwxNDM3LjY5NiBNSHosMzIzODA2MTc0NCxub25lLGdsYixtX2NudCxwaF9tdXhfY2xrLHRydWU=::UGFyYW1ldGVyIFZhbHVlcw==" +set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BhcmFtZXRlcl9saXN0::TS1Db3VudGVyIEhpIERpdmlkZSxNLUNvdW50ZXIgTG93IERpdmlkZSxOLUNvdW50ZXIgSGkgRGl2aWRlLE4tQ291bnRlciBMb3cgRGl2aWRlLE0tQ291bnRlciBCeXBhc3MgRW5hYmxlLE4tQ291bnRlciBCeXBhc3MgRW5hYmxlLE0tQ291bnRlciBPZGQgRGl2aWRlIEVuYWJsZSxOLUNvdW50ZXIgT2RkIERpdmlkZSBFbmFibGUsQy1Db3VudGVyLTAgSGkgRGl2aWRlLEMtQ291bnRlci0wIExvdyBEaXZpZGUsQy1Db3VudGVyLTAgQ29hcnNlIFBoYXNlIFNoaWZ0LEMtQ291bnRlci0wIFZDTyBQaGFzZSBUYXAsQy1Db3VudGVyLTAgSW5wdXQgU291cmNlLEMtQ291bnRlci0wIEJ5cGFzcyBFbmFibGUsQy1Db3VudGVyLTAgT2RkIERpdmlkZSBFbmFibGUsQy1Db3VudGVyLTEgSGkgRGl2aWRlLEMtQ291bnRlci0xIExvdyBEaXZpZGUsQy1Db3VudGVyLTEgQ29hcnNlIFBoYXNlIFNoaWZ0LEMtQ291bnRlci0xIFZDTyBQaGFzZSBUYXAsQy1Db3VudGVyLTEgSW5wdXQgU291cmNlLEMtQ291bnRlci0xIEJ5cGFzcyBFbmFibGUsQy1Db3VudGVyLTEgT2RkIERpdmlkZSBFbmFibGUsQy1Db3VudGVyLTIgSGkgRGl2aWRlLEMtQ291bnRlci0yIExvdyBEaXZpZGUsQy1Db3VudGVyLTIgQ29hcnNlIFBoYXNlIFNoaWZ0LEMtQ291bnRlci0yIFZDTyBQaGFzZSBUYXAsQy1Db3VudGVyLTIgSW5wdXQgU291cmNlLEMtQ291bnRlci0yIEJ5cGFzcyBFbmFibGUsQy1Db3VudGVyLTIgT2RkIERpdmlkZSBFbmFibGUsVkNPIFBvc3QgRGl2aWRlIENvdW50ZXIgRW5hYmxlLENoYXJnZSBQdW1wIGN1cnJlbnQgKHVBKSxMb29wIEZpbHRlciBCYW5kd2lkdGggUmVzaXN0b3IgKE9obXMpICxQTEwgT3V0cHV0IFZDTyBGcmVxdWVuY3ksSy1GcmFjdGlvbmFsIERpdmlzaW9uIFZhbHVlIChEU00pLEZlZWRiYWNrIENsb2NrIFR5cGUsRmVlZGJhY2sgQ2xvY2sgTVVYIDEsRmVlZGJhY2sgQ2xvY2sgTVVYIDIsTSBDb3VudGVyIFNvdXJjZSBNVVgsUExMIEF1dG8gUmVzZXQ=::UGFyYW1ldGVyIE5hbWVz" +set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BhcmFtZXRlcl92YWx1ZXM=::NSw0LDI1NiwyNTYsZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlLDEyLDEyLDEsMCxwaF9tdXhfY2xrLGZhbHNlLGZhbHNlLDYsNiwxLDAscGhfbXV4X2NsayxmYWxzZSxmYWxzZSw1LDQsMSwwLHBoX211eF9jbGssZmFsc2UsdHJ1ZSwyLDIwLDQwMDAsNDc5LjIzMiBNSHosMjUxMTAwOTY4MCxub25lLGdsYixtX2NudCxwaF9tdXhfY2xrLHRydWU=::UGFyYW1ldGVyIFZhbHVlcw==" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX21pZl9nZW5lcmF0ZQ==::ZmFsc2U=::R2VuZXJhdGUgTUlGIGZpbGU=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2VuYWJsZV9taWZfZHBz::ZmFsc2U=::RW5hYmxlIER5bmFtaWMgUGhhc2UgU2hpZnQgZm9yIE1JRiBzdHJlYW1pbmc=" set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2Rwc19jbnRy::QzA=::RFBTIENvdW50ZXIgU2VsZWN0aW9u" diff --git a/rtl/pll.v b/rtl/pll.v index ee3deb1..0ee78a3 100644 --- a/rtl/pll.v +++ b/rtl/pll.v @@ -11,7 +11,6 @@ module pll ( output wire outclk_0, // outclk0.clk output wire outclk_1, // outclk1.clk output wire outclk_2, // outclk2.clk - output wire outclk_3, // outclk3.clk output wire locked // locked.export ); @@ -21,7 +20,6 @@ module pll ( .outclk_0 (outclk_0), // outclk0.clk .outclk_1 (outclk_1), // outclk1.clk .outclk_2 (outclk_2), // outclk2.clk - .outclk_3 (outclk_3), // outclk3.clk .locked (locked) // locked.export ); @@ -67,7 +65,7 @@ endmodule // Retrieval info: // Retrieval info: // Retrieval info: -// Retrieval info: +// Retrieval info: // Retrieval info: // Retrieval info: // Retrieval info: diff --git a/rtl/pll/pll_0002.v b/rtl/pll/pll_0002.v index e70a3cd..c420d8e 100644 --- a/rtl/pll/pll_0002.v +++ b/rtl/pll/pll_0002.v @@ -16,9 +16,6 @@ module pll_0002( // interface 'outclk2' output wire outclk_2, - // interface 'outclk3' - output wire outclk_3, - // interface 'locked' output wire locked ); @@ -27,7 +24,7 @@ module pll_0002( .fractional_vco_multiplier("true"), .reference_clock_frequency("50.0 MHz"), .operation_mode("direct"), - .number_of_clocks(4), + .number_of_clocks(3), .output_clock_frequency0("19.968000 MHz"), .phase_shift0("0 ps"), .duty_cycle0(50), @@ -37,8 +34,8 @@ module pll_0002( .output_clock_frequency2("53.248000 MHz"), .phase_shift2("0 ps"), .duty_cycle2(50), - .output_clock_frequency3("19.968000 MHz"), - .phase_shift3("38951 ps"), + .output_clock_frequency3("0 MHz"), + .phase_shift3("0 ps"), .duty_cycle3(50), .output_clock_frequency4("0 MHz"), .phase_shift4("0 ps"), @@ -86,7 +83,7 @@ module pll_0002( .pll_subtype("General") ) altera_pll_i ( .rst (rst), - .outclk ({outclk_3, outclk_2, outclk_1, outclk_0}), + .outclk ({outclk_2, outclk_1, outclk_0}), .locked (locked), .fboutclk ( ), .fbclk (1'b0),