Multiply system clock
This commit is contained in:
parent
85fbe07b94
commit
0e30d67fa3
|
@ -1,4 +1,4 @@
|
||||||
def get(ns, reset0, norflash0, uart0):
|
def get(ns, clkfx_sys, reset0, norflash0, uart0):
|
||||||
constraints = []
|
constraints = []
|
||||||
def add(signal, pin, vec=-1, iostandard="LVCMOS33", extra=""):
|
def add(signal, pin, vec=-1, iostandard="LVCMOS33", extra=""):
|
||||||
constraints.append((ns.get_name(signal), vec, pin, iostandard, extra))
|
constraints.append((ns.get_name(signal), vec, pin, iostandard, extra))
|
||||||
|
@ -8,6 +8,8 @@ def get(ns, reset0, norflash0, uart0):
|
||||||
add(signal, p, i, iostandard, extra)
|
add(signal, p, i, iostandard, extra)
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
|
add(clkfx_sys.clkin, "AB11", extra="TNM_NET = \"GRPclk50\"")
|
||||||
|
|
||||||
add(reset0.trigger_reset, "AA4")
|
add(reset0.trigger_reset, "AA4")
|
||||||
add(reset0.ac97_rst_n, "D6")
|
add(reset0.ac97_rst_n, "D6")
|
||||||
add(reset0.videoin_rst_n, "W17")
|
add(reset0.videoin_rst_n, "W17")
|
||||||
|
@ -39,8 +41,6 @@ def get(ns, reset0, norflash0, uart0):
|
||||||
r += ";\n"
|
r += ";\n"
|
||||||
|
|
||||||
r += """
|
r += """
|
||||||
NET "sys_clk" LOC = AB11 | IOSTANDARD = LVCMOS33;
|
|
||||||
NET "sys_clk" TNM_NET = "GRPclk50";
|
|
||||||
TIMESPEC "TSclk50" = PERIOD "GRPclk50" 20 ns HIGH 50%;
|
TIMESPEC "TSclk50" = PERIOD "GRPclk50" 20 ns HIGH 50%;
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
17
top.py
17
top.py
|
@ -2,10 +2,14 @@ from migen.fhdl.structure import *
|
||||||
from migen.fhdl import convtools, verilog, autofragment
|
from migen.fhdl import convtools, verilog, autofragment
|
||||||
from migen.bus import wishbone, csr, wishbone2csr
|
from migen.bus import wishbone, csr, wishbone2csr
|
||||||
|
|
||||||
from milkymist import m1reset, lm32, norflash, uart
|
from milkymist import m1reset, clkfx, lm32, norflash, uart
|
||||||
import constraints
|
import constraints
|
||||||
|
|
||||||
def get():
|
def get():
|
||||||
|
MHz = 1000000
|
||||||
|
clk_freq = 80*MHz
|
||||||
|
|
||||||
|
clkfx_sys = clkfx.Inst(50*MHz, clk_freq)
|
||||||
reset0 = m1reset.Inst()
|
reset0 = m1reset.Inst()
|
||||||
|
|
||||||
cpu0 = lm32.Inst()
|
cpu0 = lm32.Inst()
|
||||||
|
@ -16,13 +20,16 @@ def get():
|
||||||
[(0, norflash0.bus), (3, wishbone2csr0.wishbone)],
|
[(0, norflash0.bus), (3, wishbone2csr0.wishbone)],
|
||||||
register=True,
|
register=True,
|
||||||
offset=1)
|
offset=1)
|
||||||
uart0 = uart.Inst(0, 50*1000*1000, baud=115200)
|
uart0 = uart.Inst(0, clk_freq, baud=115200)
|
||||||
csrcon0 = csr.Interconnect(wishbone2csr0.csr, [uart0.bus])
|
csrcon0 = csr.Interconnect(wishbone2csr0.csr, [uart0.bus])
|
||||||
|
|
||||||
frag = autofragment.from_local() + Fragment(pads={reset0.trigger_reset})
|
frag = autofragment.from_local()
|
||||||
vns = convtools.Namespace()
|
vns = convtools.Namespace()
|
||||||
src_verilog = verilog.Convert(frag, name="soc",
|
src_verilog = verilog.Convert(frag,
|
||||||
|
{clkfx_sys.clkin, reset0.trigger_reset},
|
||||||
|
name="soc",
|
||||||
|
clk_signal=clkfx_sys.clkout,
|
||||||
rst_signal=reset0.sys_rst,
|
rst_signal=reset0.sys_rst,
|
||||||
ns=vns)
|
ns=vns)
|
||||||
src_ucf = constraints.get(vns, reset0, norflash0, uart0)
|
src_ucf = constraints.get(vns, clkfx_sys, reset0, norflash0, uart0)
|
||||||
return (src_verilog, src_ucf)
|
return (src_verilog, src_ucf)
|
||||||
|
|
Loading…
Reference in New Issue