Warp-LC/fpga/CLKGEN.v

65 lines
1.6 KiB
Verilog

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 16:47:14 10/29/2021
// Design Name:
// Module Name: CLKGEN
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module ClkGen(
input CLKIN,
input CLKFB_IN,
output CLKFB_OUT,
output FSBCLK,
output reg CPUCLKr,
output CPUCLK,
output FPUCLK,
output RAMCLK0,
output RAMCLK1);
PLL pll (
.CLKIN(CLKIN),
.CLKFB_IN(CLKFB_IN),
.CLKFB_OUT(CLKFB_OUT),
.FSBCLK(FSBCLK));
always @(posedge FSBCLK) CPUCLKr <= ~CPUCLKr;
ODDR2 #(.DDR_ALIGNMENT("C0"), .INIT(1'b0), .SRTYPE("ASYNC"))
CPUCLK_inst (.Q(CPUCLK), .CE(1'b1),
.C0(FSBCLK), .C1(~FSBCLK),
.D0(~CPUCLKr), .D1(~CPUCLKr),
.R(1'b0), .S(1'b0));
ODDR2 #(.DDR_ALIGNMENT("C0"), .INIT(1'b0), .SRTYPE("ASYNC"))
FPUCLK_inst (.Q(FPUCLK), .CE(1'b1),
.C0(FSBCLK), .C1(~FSBCLK),
.D0(CPUCLKr), .D1(CPUCLKr),
.R(1'b0), .S(1'b0));
ODDR2 #(.DDR_ALIGNMENT("C0"), .INIT(1'b0), .SRTYPE("ASYNC"))
RAMCLK0_inst (.Q(RAMCLK0), .CE(1'b1),
.C0(FSBCLK), .C1(~FSBCLK),
.D0(1'b0), .D1(1'b1),
.R(1'b0), .S(1'b0));
ODDR2 #(.DDR_ALIGNMENT("C0"), .INIT(1'b0), .SRTYPE("ASYNC"))
RAMCLK1_inst (.Q(RAMCLK1), .CE(1'b1),
.C0(FSBCLK), .C1(~FSBCLK),
.D0(1'b0), .D1(1'b1),
.R(1'b0), .S(1'b0));
endmodule