Implemented fractional divisions for slower clocks

Moved IPC to clk_sys clock domain
This commit is contained in:
Marcel Kilgus
2020-09-26 10:14:07 +02:00
parent 386e2ee53f
commit 134ce2fa73
7 changed files with 87 additions and 95 deletions

117
QL.sv
View File

@@ -176,7 +176,6 @@ always @(posedge clk_sys) if (reset) ram_cfg <= status[5:4];
///////////////// CLOCKS ////////////////////////
wire clk_11m;
wire clk_sys;
wire pll_locked;
@@ -185,106 +184,100 @@ pll pll
.refclk(CLK_50M),
.rst(0),
.outclk_0(clk_sys), // System clock
.outclk_1(clk_11m), // Clock for 8049 IPC
.locked(pll_locked)
);
// 84Mhz sys_clk
parameter DIV_BUS_QL = 4'd11; // 84Mhz / 11 = 7.64Mhz
parameter DIV_BUS_16 = 4'd5; // 84Mhz / 5 = 16.8Mhz
parameter DIV_BUS_24 = 4'd3; // 84Mhz / 3 = 21.5Mhz
parameter DIV_BUS_FULL = 4'd2; // 84Mhz / 2 = 42Mhz
// 84MHz sys_clk
parameter FRACT_BUS_QL = 17'd11702; // 84MHz * 11702 / 65536 = 14.999MHz
parameter FRACT_BUS_16 = 17'd24966; // 84MHz * 24966 / 65536 = 31.999MHz
parameter FRACT_BUS_24 = 17'd37449; // 84MHz * 37449 / 65536 = 48.000MHz
parameter FRACT_BUS_FULL = 17'h10000; // 84MHz
parameter DIV_131k = 10'd640; // 84Mhz / 640 = 131250Hz
parameter DIV_VID = 4'd8; // 84Mhz / 8 = 10.5Mhz
parameter DIV_SD = 3'd2; // 84Mhz / 2 = 42Mhz (effectively 21Mhz SPI speed)
parameter FRACT_SD = 17'd19505; // 84MHz * 39010 / 65536 = 50Mhz (effectively 25Mhz SPI speed)
parameter FRACT_11M = 17'd8582; // 84MHz * 8582 / 65536 = 10.999Mhz
parameter DIV_131k = 10'd640; // 84MHz / 640 = 131250Hz
parameter DIV_VID = 4'd8; // 84MHz / 8 = 10.5MHz
// 94.5Mhz sys_clk
/*parameter DIV_BUS_QL = 4'd13; // 94.5Mhz / 13 = 7.27Mhz
parameter DIV_BUS_16 = 4'd6; // 94.5Mhz / 6 = 15.75Mhz
parameter DIV_BUS_24 = 4'd4; // 94.5Mhz / 4 = 23.625Mhz
parameter DIV_BUS_FULL = 4'd2; // 94.5Mhz / 2 = 47.25Mhz
// 94.5MHz sys_clk
/*parameter FRACT_BUS_QL = 17'd11702; // 94.5MHz * 10403 / 65536 = 15.000MHz
parameter FRACT_BUS_16 = 17'd24966; // 94.5MHz * 22192 / 65536 = 31.999MHz
parameter FRACT_BUS_24 = 17'd37449; // 94.5MHz * 33288 / 65536 = 48.000MHz
parameter FRACT_BUS_FULL = 17'h10000; // 94.5MHz
parameter DIV_131k = 10'd720; // 94.5Mhz / 720 = 131250Hz
parameter DIV_VID = 4'd9; // 94.5Mhz / 9 = 10.5Mhz
parameter DIV_SD = 3'd2; // 94.5Mhz / 2 = 47.25Mhz (effectively 23.625Mhz SPI speed)*/
parameter FRACT_SD = 17'd19505; // 94.5MHz * 34675 / 65536 = 49.999MHz (effectively 25Mhz SPI speed)
parameter FRACT_11M = 17'd8582; // 94.5MHz * 7629 / 65536 = 11.001MHz
parameter DIV_131k = 10'd720; // 94.5MHz / 720 = 131250Hz
parameter DIV_VID = 4'd9; // 94.5MHz / 9 = 10.5MHz*/
// 105Mhz sys_clk
/*parameter DIV_BUS_QL = 4'd14; // 105Mhz / 14 = 7.5Mhz
parameter DIV_BUS_16 = 4'd7; // 105Mhz / 7 = 15Mhz
parameter DIV_BUS_24 = 4'd4; // 105Mhz / 4 = 26.25Mhz
parameter DIV_BUS_FULL = 4'd2; // 105Mhz / 2 = 52.5Mhz
// 105MHz sys_clk
/*parameter FRACT_BUS_QL = 17'd11702; // 105MHz * 9362 / 65536 = 14.999MHz
parameter FRACT_BUS_16 = 17'd24966; // 105MHz * 19973 / 65536 = 32.000MHz
parameter FRACT_BUS_24 = 17'd37449; // 105MHz * 29959 / 65536 = 47.999MHz
parameter FRACT_BUS_FULL = 17'h10000; // 105MHz
parameter DIV_131k = 10'd800; // 105Mhz / 800 = 131250Hz
parameter DIV_VID = 4'd10; // 105Mhz / 10 = 10.5Mhz
parameter DIV_SD = 3'd3; // 105Mhz / 3 = 35hz (effectively 17.5Mhz SPI speed)*/
parameter FRACT_SD = 17'd19505; // 105MHz * 31208 / 65536 = 50.000MHz (effectively 25Mhz SPI speed)
parameter FRACT_11M = 17'd8582; // 105MHz * 6866 / 65536 = 11.001MHz
parameter DIV_131k = 10'd800; // 105MHz / 800 = 131250Hz
parameter DIV_VID = 4'd10; // 105MHz / 10 = 10.5MHz*/
wire [16:0] fract_bus =
cpu_speed == 0? FRACT_BUS_QL:
cpu_speed == 1? FRACT_BUS_16:
cpu_speed == 2? FRACT_BUS_24:
FRACT_BUS_FULL;
reg ce_bus_p, ce_bus_n;
reg ce_131k; // Supposed to be 131025 Hz for SDRAM refresh and clock update
reg ce_vid; // 10.5Mhz pixel clock
reg ce_sd; // ~50 Mhz SD clock
reg ce_11m;
always @(negedge clk_sys)
begin
reg [3:0] divBus;
reg bus_pol;
reg bus_tick;
reg [15:0] cnt_bus;
reg [15:0] cnt_sd;
reg [15:0] cnt_11m;
reg [9:0] div131k;
reg [3:0] divVid;
reg [2:0] divSD;
if (reset)
begin
divBus <= 0;
bus_pol <= 0;
cnt_bus <= 0;
div131k <= 0;
divVid <= 0;
divSD <= 0;
end else begin
divBus <= divBus + 4'd1;
div131k<= div131k + 10'd1;
divVid <= divVid + 4'd1;
divSD <= divSD + 3'd1;
end
ce_bus_p <= divBus == 0;
case (cpu_speed)
0: begin
// Original QL speed
if (divBus == DIV_BUS_QL - 1) divBus <= 0;
ce_bus_n <= divBus == DIV_BUS_QL / 2;
end
// CPU clock
{bus_tick, cnt_bus} <= cnt_bus + fract_bus;
ce_bus_p <= bus_tick && !bus_pol;
ce_bus_n <= bus_tick && bus_pol;
bus_pol <= bus_tick ^ bus_pol;
1: begin
// Gold Card 16Mhz
if (divBus == DIV_BUS_16 - 1) divBus <= 0;
ce_bus_n <= divBus == DIV_BUS_16 / 2;
end
2: begin
// Gold Card 24Mhz
if (divBus == DIV_BUS_24 - 1) divBus <= 0;
ce_bus_n <= divBus == DIV_BUS_24 / 2;
end
3: begin
// Full speed
if (divBus == DIV_BUS_FULL - 1) divBus <= 0;
ce_bus_n <= divBus == DIV_BUS_FULL / 2;
end
endcase
// SDRAM refresh and clock update
if (div131k == DIV_131k - 1) div131k <= 0;
ce_131k <= !div131k;
// 10.5Mhz pixel clock
if (divVid == DIV_VID - 1) divVid <= 0;
ce_vid <= !divVid;
if (divSD == DIV_SD - 1) divSD <= 0;
ce_sd <= !divSD;
// QL-SD clock
{ce_sd, cnt_sd} <= cnt_sd + FRACT_SD;
// 11Mhz IPC clock
{ce_11m, cnt_11m} <= cnt_11m + FRACT_11M;
end
//////////////// QL RAM timing ////////////////////
wire ram_delay_dtack;
wire rom_delay_dtack;
ql_timing ql_timing(
.*,
@@ -646,7 +639,7 @@ zx8302 zx8302
.reset ( reset ),
.reset_mdv ( osd_reset ),
.clk ( clk_sys ),
.clk11 ( clk_11m ),
.ce_11m ( ce_11m ),
.xint ( qimi_irq ),
.ipl ( cpu_ipl ),

View File

@@ -22,7 +22,8 @@
module ipc (
input reset,
input clk11,
input clk,
input ce_11m,
// synchronous serial connection
output comctrl,
@@ -49,7 +50,8 @@ wire [63:0] kbd_matrix;
keyboard keyboard (
.reset ( reset ),
.clk ( clk11 ),
.clk ( clk ),
.ce_11m ( ce_11m ),
.ps2_key ( ps2_key ),
@@ -75,8 +77,8 @@ wire [7:0] t8049_p2_i = { comdata_out && comdata_in, 7'b0000000 };
assign comdata_out = t8049_p2_o[7];
t8049_notri #(0) t8049 (
.xtal_i ( clk11 ),
.xtal_en_i ( 1'b1 ),
.xtal_i ( clk ),
.xtal_en_i ( ce_11m ),
.reset_n_i ( !reset ),
.t0_i ( 1'b0 ),
.t1_i ( 1'b0 ),

View File

@@ -22,6 +22,7 @@
module keyboard (
input clk,
input ce_11m,
input reset,
// ps2 interface
@@ -59,11 +60,11 @@ wire x_f3 = specialD[9] || js0[0];
wire x_f4 = specialD[10]|| js0[3];
wire x_f5 = specialD[11]|| js0[4];
// divide 11mhz clock down to ~1khz some delay
wire clk_delay = clk_delay_cnt[9];
reg [9:0] clk_delay_cnt; // 11mhz/1024
// Divide 11MHz clock down to ~1khz some delay
wire clk_delay = clk_delay_cnt[12];
reg [12:0] clk_delay_cnt; // 11MHz / 8192 = 1.342kHz
always @(posedge clk)
clk_delay_cnt <= clk_delay_cnt + 10'd1;
if (ce_11m) clk_delay_cnt <= clk_delay_cnt + 13'd1;
// The "main" key of a combined modifier key needs to be delayed. Otherwise
// the QL will not accept it. E.g. when pressing CTRL-LEFT, the CTRL key needs
@@ -95,7 +96,7 @@ wire [63:0] special_matrix = {
2'b00, x_f5, x_f3, x_f2, 1'b0, x_f1, x_f4
};
// ================================= leyout =============================
// ================================= layout =============================
// F1 ESC 1 2 3 4 5 6 7 8 9 0 - = £ \
// F2 TAB Q W E R T Y U I O P [ ]
// F3 CAPS A S D F G H J K L ; ' ENTER

View File

@@ -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=::Mg==::TnVtYmVyIE9mIENsb2Nrcw=="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "bnVtYmVyX29mX2Nsb2Nrcw==::Mg==::bnVtYmVyX29mX2Nsb2Nrcw=="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX251bWJlcl9vZl9jbG9ja3M=::MQ==::TnVtYmVyIE9mIENsb2Nrcw=="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "bnVtYmVyX29mX2Nsb2Nrcw==::MQ==::bnVtYmVyX29mX2Nsb2Nrcw=="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX211bHRpcGx5X2ZhY3Rvcg==::MQ==::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::ODQuMA==::RGVzaXJlZCBGcmVxdWVuY3k="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2RpdmlkZV9mYWN0b3JfYzA=::MQ==::RGl2aWRlIEZhY3RvciAoQy1Db3VudGVyKQ=="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3Iw::MTg=::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg=="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjA=::MjA2MTU3MzMwNw==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ=="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMA==::MTE=::QWN0dWFsIERpdmlkZSBGYWN0b3I="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3Iw::OA==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg=="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjA=::MTcxNzk4NjgzMw==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ=="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMA==::NQ==::QWN0dWFsIERpdmlkZSBGYWN0b3I="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9vdXRwdXRfY2xvY2tfZnJlcXVlbmN5MA==::MCBNSHo=::QWN0dWFsIEZyZXF1ZW5jeQ=="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BzX3VuaXRzMA==::cHM=::UGhhc2UgU2hpZnQgdW5pdHM="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0MA==::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::MTEuMA==::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::MTI2::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg=="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9tdWx0aXBseV9mYWN0b3Iy::MQ==::QWN0dWFsIE11bHRpcGx5IEZhY3Rvcg=="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9mcmFjX211bHRpcGx5X2ZhY3RvcjI=::MQ==::QWN0dWFsIEZyYWN0aW9uYWwgTXVsdGlwbHkgRmFjdG9yIChLKQ=="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMg==::NTc1::QWN0dWFsIERpdmlkZSBGYWN0b3I="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9kaXZpZGVfZmFjdG9yMg==::MQ==::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==::cHM=::UGhhc2UgU2hpZnQgdW5pdHM="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0Mg==::MA==::UGhhc2UgU2hpZnQ="
@@ -256,10 +256,10 @@ set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAM
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BoYXNlX3NoaWZ0X2RlZzE3::MC4w::UGhhc2UgU2hpZnQ="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2FjdHVhbF9waGFzZV9zaGlmdDE3::MA==::QWN0dWFsIFBoYXNlIFNoaWZ0"
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX2R1dHlfY3ljbGUxNw==::NTA=::RHV0eSBDeWNsZQ=="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTA=::ODMuOTk5OTkyIE1Ieg==::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTA="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTA=::ODQuMDAwMDAwIE1Ieg==::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTA="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQw::MCBwcw==::cGhhc2Vfc2hpZnQw"
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTA=::NTA=::ZHV0eV9jeWNsZTA="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTE=::MTAuOTk5OTk4IE1Ieg==::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTE="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTE=::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTE="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "cGhhc2Vfc2hpZnQx::MCBwcw==::cGhhc2Vfc2hpZnQx"
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "ZHV0eV9jeWNsZTE=::NTA=::ZHV0eV9jeWNsZTE="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTI=::MCBNSHo=::b3V0cHV0X2Nsb2NrX2ZyZXF1ZW5jeTI="
@@ -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::TS1Db3VudGVyIEhpIERpdmlkZSxNLUNvdW50ZXIgTG93IERpdmlkZSxOLUNvdW50ZXIgSGkgRGl2aWRlLE4tQ291bnRlciBMb3cgRGl2aWRlLE0tQ291bnRlciBCeXBhc3MgRW5hYmxlLE4tQ291bnRlciBCeXBhc3MgRW5hYmxlLE0tQ291bnRlciBPZGQgRGl2aWRlIEVuYWJsZSxOLUNvdW50ZXIgT2RkIERpdmlkZSBFbmFibGUsQy1Db3VudGVyLTAgSGkgRGl2aWRlLEMtQ291bnRlci0wIExvdyBEaXZpZGUsQy1Db3VudGVyLTAgQ29hcnNlIFBoYXNlIFNoaWZ0LEMtQ291bnRlci0wIFZDTyBQaGFzZSBUYXAsQy1Db3VudGVyLTAgSW5wdXQgU291cmNlLEMtQ291bnRlci0wIEJ5cGFzcyBFbmFibGUsQy1Db3VudGVyLTAgT2RkIERpdmlkZSBFbmFibGUsQy1Db3VudGVyLTEgSGkgRGl2aWRlLEMtQ291bnRlci0xIExvdyBEaXZpZGUsQy1Db3VudGVyLTEgQ29hcnNlIFBoYXNlIFNoaWZ0LEMtQ291bnRlci0xIFZDTyBQaGFzZSBUYXAsQy1Db3VudGVyLTEgSW5wdXQgU291cmNlLEMtQ291bnRlci0xIEJ5cGFzcyBFbmFibGUsQy1Db3VudGVyLTEgT2RkIERpdmlkZSBFbmFibGUsVkNPIFBvc3QgRGl2aWRlIENvdW50ZXIgRW5hYmxlLENoYXJnZSBQdW1wIGN1cnJlbnQgKHVBKSxMb29wIEZpbHRlciBCYW5kd2lkdGggUmVzaXN0b3IgKE9obXMpICxQTEwgT3V0cHV0IFZDTyBGcmVxdWVuY3ksSy1GcmFjdGlvbmFsIERpdmlzaW9uIFZhbHVlIChEU00pLEZlZWRiYWNrIENsb2NrIFR5cGUsRmVlZGJhY2sgQ2xvY2sgTVVYIDEsRmVlZGJhY2sgQ2xvY2sgTVVYIDIsTSBDb3VudGVyIFNvdXJjZSBNVVgsUExMIEF1dG8gUmVzZXQ=::UGFyYW1ldGVyIE5hbWVz"
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BhcmFtZXRlcl92YWx1ZXM=::OSw5LDI1NiwyNTYsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSw2LDUsMSwwLHBoX211eF9jbGssZmFsc2UsdHJ1ZSw0Miw0MiwxLDAscGhfbXV4X2NsayxmYWxzZSxmYWxzZSwxLDIwLDQwMDAsOTIzLjk5OTg3MiBNSHosMjA2MTU3MzMwNyxub25lLGdsYixtX2NudCxwaF9tdXhfY2xrLHRydWU=::UGFyYW1ldGVyIFZhbHVlcw=="
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BhcmFtZXRlcl9saXN0::TS1Db3VudGVyIEhpIERpdmlkZSxNLUNvdW50ZXIgTG93IERpdmlkZSxOLUNvdW50ZXIgSGkgRGl2aWRlLE4tQ291bnRlciBMb3cgRGl2aWRlLE0tQ291bnRlciBCeXBhc3MgRW5hYmxlLE4tQ291bnRlciBCeXBhc3MgRW5hYmxlLE0tQ291bnRlciBPZGQgRGl2aWRlIEVuYWJsZSxOLUNvdW50ZXIgT2RkIERpdmlkZSBFbmFibGUsQy1Db3VudGVyLTAgSGkgRGl2aWRlLEMtQ291bnRlci0wIExvdyBEaXZpZGUsQy1Db3VudGVyLTAgQ29hcnNlIFBoYXNlIFNoaWZ0LEMtQ291bnRlci0wIFZDTyBQaGFzZSBUYXAsQy1Db3VudGVyLTAgSW5wdXQgU291cmNlLEMtQ291bnRlci0wIEJ5cGFzcyBFbmFibGUsQy1Db3VudGVyLTAgT2RkIERpdmlkZSBFbmFibGUsVkNPIFBvc3QgRGl2aWRlIENvdW50ZXIgRW5hYmxlLENoYXJnZSBQdW1wIGN1cnJlbnQgKHVBKSxMb29wIEZpbHRlciBCYW5kd2lkdGggUmVzaXN0b3IgKE9obXMpICxQTEwgT3V0cHV0IFZDTyBGcmVxdWVuY3ksSy1GcmFjdGlvbmFsIERpdmlzaW9uIFZhbHVlIChEU00pLEZlZWRiYWNrIENsb2NrIFR5cGUsRmVlZGJhY2sgQ2xvY2sgTVVYIDEsRmVlZGJhY2sgQ2xvY2sgTVVYIDIsTSBDb3VudGVyIFNvdXJjZSBNVVgsUExMIEF1dG8gUmVzZXQ=::UGFyYW1ldGVyIE5hbWVz"
set_global_assignment -entity "pll_0002" -library "pll" -name IP_COMPONENT_PARAMETER "Z3VpX3BhcmFtZXRlcl92YWx1ZXM=::NCw0LDI1NiwyNTYsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSwzLDIsMSwwLHBoX211eF9jbGssZmFsc2UsdHJ1ZSwyLDIwLDQwMDAsNDE5Ljk5OTk5OSBNSHosMTcxNzk4NjgzMyxub25lLGdsYixtX2NudCxwaF9tdXhfY2xrLHRydWU=::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"

View File

@@ -2,14 +2,13 @@
// GENERATION: XML
// pll.v
// Generated using ACDS version 17.0 602
// Generated using ACDS version 17.0 595
`timescale 1 ps / 1 ps
module pll (
input wire refclk, // refclk.clk
input wire rst, // reset.reset
output wire outclk_0, // outclk0.clk
output wire outclk_1, // outclk1.clk
output wire locked // locked.export
);
@@ -17,7 +16,6 @@ module pll (
.refclk (refclk), // refclk.clk
.rst (rst), // reset.reset
.outclk_0 (outclk_0), // outclk0.clk
.outclk_1 (outclk_1), // outclk1.clk
.locked (locked) // locked.export
);
@@ -63,7 +61,7 @@ endmodule
// Retrieval info: <generic name="gui_dsm_out_sel" value="1st_order" />
// Retrieval info: <generic name="gui_use_locked" value="true" />
// Retrieval info: <generic name="gui_en_adv_params" value="false" />
// Retrieval info: <generic name="gui_number_of_clocks" value="2" />
// Retrieval info: <generic name="gui_number_of_clocks" value="1" />
// Retrieval info: <generic name="gui_multiply_factor" value="1" />
// Retrieval info: <generic name="gui_frac_multiply_factor" value="1" />
// Retrieval info: <generic name="gui_divide_factor_n" value="1" />

View File

@@ -10,9 +10,6 @@ module pll_0002(
// interface 'outclk0'
output wire outclk_0,
// interface 'outclk1'
output wire outclk_1,
// interface 'locked'
output wire locked
);
@@ -21,11 +18,11 @@ module pll_0002(
.fractional_vco_multiplier("true"),
.reference_clock_frequency("50.0 MHz"),
.operation_mode("direct"),
.number_of_clocks(2),
.output_clock_frequency0("83.999992 MHz"),
.number_of_clocks(1),
.output_clock_frequency0("84.000000 MHz"),
.phase_shift0("0 ps"),
.duty_cycle0(50),
.output_clock_frequency1("10.999998 MHz"),
.output_clock_frequency1("0 MHz"),
.phase_shift1("0 ps"),
.duty_cycle1(50),
.output_clock_frequency2("0 MHz"),
@@ -80,7 +77,7 @@ module pll_0002(
.pll_subtype("General")
) altera_pll_i (
.rst (rst),
.outclk ({outclk_1, outclk_0}),
.outclk ({outclk_0}),
.locked (locked),
.fboutclk ( ),
.fbclk (1'b0),

View File

@@ -23,7 +23,7 @@
module zx8302
(
input clk,
input clk11, // 11 MHz ipc
input ce_11m, // 11 MHz ipc
input reset,
input reset_mdv,
@@ -179,7 +179,8 @@ wire [1:0] ipc_ipl;
ipc ipc (
.reset ( reset ),
.clk11 ( clk11 ),
.clk ( clk ),
.ce_11m ( ce_11m ),
.comctrl ( ipc_comctrl ),
.comdata_in ( ipc_comdata_in ),