Line 1... |
Line 1... |
|
################################################################################
|
|
##
|
|
## Filename: cmod.ucf
|
|
##
|
|
## Project: CMod S6 System on a Chip, ZipCPU demonstration project
|
|
##
|
|
## Purpose: This file is really from Digilent, and so the copyright
|
|
## statement below applies only to those changes that have been
|
|
## made to modify it to support the CMod S6 SoC project. That said ...
|
|
##
|
|
## This file specifies the pin connections for all of the peripherals
|
|
## connected to the Cmod S6 SoC.
|
|
##
|
|
##
|
|
## Creator: Dan Gisselquist, Ph.D.
|
|
## Gisselquist Technology, LLC
|
|
##
|
|
################################################################################
|
|
##
|
|
## Copyright (C) 2015-2016, Gisselquist Technology, LLC
|
|
##
|
|
## This program is free software (firmware): you can redistribute it and/or
|
|
## modify it under the terms of the GNU General Public License as published
|
|
## by the Free Software Foundation, either version 3 of the License, or (at
|
|
## your option) any later version.
|
|
##
|
|
## This program is distributed in the hope that it will be useful, but WITHOUT
|
|
## ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY or
|
|
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
## for more details.
|
|
##
|
|
## You should have received a copy of the GNU General Public License along
|
|
## with this program. (It's in the $(ROOT)/doc directory, run make with no
|
|
## target there if the PDF file isn't present.) If not, see
|
|
## for a copy.
|
|
##
|
|
## License: GPL, v3, as defined and found on www.gnu.org,
|
|
## http://www.gnu.org/licenses/gpl.html
|
|
##
|
|
##
|
|
################################################################################
|
|
##
|
|
##
|
|
|
#FPGA_GCLK
|
#FPGA_GCLK
|
NET "i_clk_8mhz" LOC = "N8" | IOSTANDARD = LVCMOS33;
|
NET "i_clk_8mhz" LOC = "N8" | IOSTANDARD = LVCMOS33;
|
NET "i_clk_8mhz" TNM_NET = "i_clk_8mhz";
|
NET "i_clk_8mhz" TNM_NET = "i_clk_8mhz";
|
TIMESPEC "TSi_clk_8mhz" = PERIOD "i_clk_8mhz" 125.0 ns HIGH 50%;
|
TIMESPEC "TSi_clk_8mhz" = PERIOD "i_clk_8mhz" 125.0 ns HIGH 50%;
|
|
|
Line 38... |
Line 82... |
# NET "DBUS<6>" LOC = "B12" | IOSTANDARD = LVCMOS33;
|
# NET "DBUS<6>" LOC = "B12" | IOSTANDARD = LVCMOS33;
|
# NET "DBUS<7>" LOC = "A12" | IOSTANDARD = LVCMOS33;
|
# NET "DBUS<7>" LOC = "A12" | IOSTANDARD = LVCMOS33;
|
|
|
#IO PORTs
|
#IO PORTs
|
|
|
# #A
|
# UART: PIO26 (CTS), PIO27 (TXD), PIO28(RXD), PIO29(RTS)
|
NET "i_uart" LOC = "P5" | IOSTANDARD = LVCMOS33;
|
NET "i_uart" LOC = "A2" | IOSTANDARD = LVCMOS33;
|
NET "o_uart" LOC = "N5" | IOSTANDARD = LVCMOS33;
|
NET "o_uart" LOC = "B3" | IOSTANDARD = LVCMOS33;
|
NET "o_pwm" LOC = "P12" | IOSTANDARD = LVCMOS33;
|
NET "i_uart_cts" LOC = "A3" | IOSTANDARD = LVCMOS33;
|
NET "io_scl" LOC = "N6" | IOSTANDARD = LVCMOS33 | PULLUP; # io_scl
|
NET "o_uart_rts" LOC = "B1" | IOSTANDARD = LVCMOS33;
|
NET "io_sda" LOC = "P7" | IOSTANDARD = LVCMOS33 | PULLUP; # io_sda
|
# PWM-Audio: Shutdown (PIO46), Gain (PIO47), PWM-Audio (PIO48)
|
NET "o_pwm_shutdown_n" LOC = "K1" | IOSTANDARD = LVCMOS33 | PULLUP;
|
NET "o_pwm" LOC = "M2" | IOSTANDARD = LVCMOS33;
|
NET "o_pwm_gain" LOC = "K2" | IOSTANDARD = LVCMOS33 | PULLUP;
|
NET "o_pwm_shutdown_n" LOC = "L2" | IOSTANDARD = LVCMOS33 | PULLUP;
|
|
NET "o_pwm_gain" LOC = "M1" | IOSTANDARD = LVCMOS33 | PULLUP;
|
#
|
# I2C
|
NET "o_gpio<2>" LOC = "N12" | IOSTANDARD = LVCMOS33; # o_mosi
|
NET "io_scl" LOC = "K2" | IOSTANDARD = LVCMOS33 | PULLUP; # io_scl, PIO44
|
NET "o_gpio<3>" LOC = "L14" | IOSTANDARD = LVCMOS33; # o_sck
|
NET "io_sda" LOC = "L1" | IOSTANDARD = LVCMOS33 | PULLUP; # io_sda, PIO45
|
NET "o_gpio<4>" LOC = "L13" | IOSTANDARD = LVCMOS33; # o_ss
|
|
|
#
|
|
# o_gpio<0> and o_gpio<1> have been borrowed for io_scl and io_sda, hence we
|
|
# start our count here at 2
|
|
#
|
|
NET "o_gpio<2>" LOC = "N12" | IOSTANDARD = LVCMOS33; # display o_mosi
|
|
NET "o_gpio<3>" LOC = "L14" | IOSTANDARD = LVCMOS33; # display o_sck
|
|
NET "o_gpio<4>" LOC = "L13" | IOSTANDARD = LVCMOS33; # display o_ss
|
NET "o_gpio<5>" LOC = "K14" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<5>" LOC = "K14" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<6>" LOC = "K13" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<6>" LOC = "K13" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<7>" LOC = "J14" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<7>" LOC = "J14" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<8>" LOC = "J13" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<8>" LOC = "J13" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<9>" LOC = "H14" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<9>" LOC = "H14" | IOSTANDARD = LVCMOS33;
|
Line 63... |
Line 114... |
NET "o_gpio<12>" LOC = "F13" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<12>" LOC = "F13" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<13>" LOC = "G14" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<13>" LOC = "G14" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<14>" LOC = "G13" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<14>" LOC = "G13" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<15>" LOC = "E14" | IOSTANDARD = LVCMOS33;
|
NET "o_gpio<15>" LOC = "E14" | IOSTANDARD = LVCMOS33;
|
|
|
|
#
|
|
# As with the o_gpio wires, i_gpio<0> and i_gpio<1> have been borrowed for
|
|
# io_scl and io_sda, hence we start our count here at 2
|
|
#
|
# NET "i_gpio<0>" LOC = "A3" | IOSTANDARD = LVCMOS33;
|
# NET "i_gpio<0>" LOC = "A3" | IOSTANDARD = LVCMOS33;
|
# NET "i_gpio<1>" LOC = "B3" | IOSTANDARD = LVCMOS33;
|
# NET "i_gpio<1>" LOC = "B3" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<2>" LOC = "A2" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<2>" LOC = "P5" | IOSTANDARD = LVCMOS33; # display miso
|
NET "i_gpio<3>" LOC = "B1" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<3>" LOC = "D14" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<4>" LOC = "C1" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<4>" LOC = "C1" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<5>" LOC = "D1" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<5>" LOC = "D1" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<6>" LOC = "D2" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<6>" LOC = "D2" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<7>" LOC = "E1" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<7>" LOC = "E1" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<8>" LOC = "E2" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<8>" LOC = "E2" | IOSTANDARD = LVCMOS33;
|
Line 80... |
Line 135... |
NET "i_gpio<12>" LOC = "H2" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<12>" LOC = "H2" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<13>" LOC = "G1" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<13>" LOC = "G1" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<14>" LOC = "G2" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<14>" LOC = "G2" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<15>" LOC = "J1" | IOSTANDARD = LVCMOS33;
|
NET "i_gpio<15>" LOC = "J1" | IOSTANDARD = LVCMOS33;
|
|
|
# NET "PORTA<0>" LOC = "P5" | IOSTANDARD = LVCMOS33 | PULLUP; # i_uart
|
# NET "PORTA<0>" LOC = "P5" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO01, i_uart
|
# NET "PORTA<1>" LOC = "N5" | IOSTANDARD = LVCMOS33 | PULLUP; # o_uart
|
# NET "PORTA<1>" LOC = "N5" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO02, o_uart
|
# NET "PORTA<2>" LOC = "N6" | IOSTANDARD = LVCMOS33 | PULLUP; # io_scl
|
# NET "PORTA<2>" LOC = "N6" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO03, io_scl
|
# NET "PORTA<3>" LOC = "P7" | IOSTANDARD = LVCMOS33 | PULLUP; # io_sda
|
# NET "PORTA<3>" LOC = "P7" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO04, io_sda
|
# NET "PORTA<4>" LOC = "P12" | IOSTANDARD = LVCMOS33 | PULLUP; # o_pwm
|
# NET "PORTA<4>" LOC = "P12" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO05, o_pwm
|
# NET "PORTA<5>" LOC = "N12" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTA<5>" LOC = "N12" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO06
|
# NET "PORTA<6>" LOC = "L14" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTA<6>" LOC = "L14" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO07
|
# NET "PORTA<7>" LOC = "L13" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTA<7>" LOC = "L13" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO08
|
#
|
#
|
# #B Input ports
|
# #B Input ports
|
# NET "PORTB<0>" LOC = "K14" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTB<0>" LOC = "K14" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO09
|
# NET "PORTB<1>" LOC = "K13" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTB<1>" LOC = "K13" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO10
|
# NET "PORTB<2>" LOC = "J14" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTB<2>" LOC = "J14" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO11
|
# NET "PORTB<3>" LOC = "J13" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTB<3>" LOC = "J13" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO12
|
# NET "PORTB<4>" LOC = "H14" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTB<4>" LOC = "H14" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO13
|
# NET "PORTB<5>" LOC = "H13" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTB<5>" LOC = "H13" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO14
|
# NET "PORTB<6>" LOC = "F14" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTB<6>" LOC = "F14" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO15
|
# NET "PORTB<7>" LOC = "F13" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTB<7>" LOC = "F13" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO16
|
#
|
#
|
# #C Input ports
|
# #C Input ports
|
# NET "PORTC<0>" LOC = "G14" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTC<0>" LOC = "G14" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO17
|
# NET "PORTC<1>" LOC = "G13" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTC<1>" LOC = "G13" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO18
|
# NET "PORTC<2>" LOC = "E14" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTC<2>" LOC = "E14" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO19
|
# NET "PORTC<3>" LOC = "E13" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTC<3>" LOC = "E13" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO20
|
# NET "PORTC<4>" LOC = "D14" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTC<4>" LOC = "D14" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO21
|
# NET "PORTC<5>" LOC = "D13" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTC<5>" LOC = "D13" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO22
|
# NET "PORTC<6>" LOC = "C13" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTC<6>" LOC = "C13" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO23
|
#
|
#
|
# #D Output ports
|
# #D Output ports
|
# NET "PORTD<0>" LOC = "A3" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTD<0>" LOC = "A3" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO26
|
# NET "PORTD<1>" LOC = "B3" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTD<1>" LOC = "B3" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO
|
# NET "PORTD<2>" LOC = "A2" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTD<2>" LOC = "A2" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO
|
# NET "PORTD<3>" LOC = "B1" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTD<3>" LOC = "B1" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO
|
# NET "PORTD<4>" LOC = "C1" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTD<4>" LOC = "C1" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO30
|
# NET "PORTD<5>" LOC = "D1" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTD<5>" LOC = "D1" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO
|
# NET "PORTD<6>" LOC = "D2" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTD<6>" LOC = "D2" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO
|
# NET "PORTD<7>" LOC = "E1" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTD<7>" LOC = "E1" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO33
|
#
|
#
|
# #E Output ports
|
# #E Output ports
|
# NET "PORTE<0>" LOC = "E2" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTE<0>" LOC = "E2" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO34
|
# NET "PORTE<1>" LOC = "F1" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTE<1>" LOC = "F1" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO
|
# NET "PORTE<2>" LOC = "F2" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTE<2>" LOC = "F2" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO
|
# NET "PORTE<3>" LOC = "H1" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTE<3>" LOC = "H1" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO
|
# NET "PORTE<4>" LOC = "H2" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTE<4>" LOC = "H2" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO
|
# NET "PORTE<5>" LOC = "G1" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTE<5>" LOC = "G1" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO
|
# NET "PORTE<6>" LOC = "G2" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTE<6>" LOC = "G2" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO
|
# NET "PORTE<7>" LOC = "J1" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTE<7>" LOC = "J1" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO41
|
#
|
#
|
# #F Unused ports
|
# #F Unused ports
|
# NET "PORTF<0>" LOC = "J2" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTF<0>" LOC = "J2" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO42
|
# NET "PORTF<1>" LOC = "K1" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTF<1>" LOC = "K1" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO
|
# NET "PORTF<2>" LOC = "K2" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTF<2>" LOC = "K2" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO44
|
# NET "PORTF<3>" LOC = "L1" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTF<3>" LOC = "L1" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO45
|
# NET "PORTF<4>" LOC = "L2" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTF<4>" LOC = "L2" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO46
|
# NET "PORTF<5>" LOC = "M1" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTF<5>" LOC = "M1" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO47
|
# NET "PORTF<6>" LOC = "M2" | IOSTANDARD = LVCMOS33 | PULLUP;
|
# NET "PORTF<6>" LOC = "M2" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO48
|
# NET "PORTF<6>" LOC = "M2" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO48
|
# NET "PORTF<6>" LOC = "M2" | IOSTANDARD = LVCMOS33 | PULLUP; # PIO48
|