| 1 |
11 |
dgisselq |
################################################################################
|
| 2 |
|
|
##
|
| 3 |
|
|
## Filename: cmod.ucf
|
| 4 |
|
|
##
|
| 5 |
|
|
## Project: CMod S6 System on a Chip, ZipCPU demonstration project
|
| 6 |
|
|
##
|
| 7 |
|
|
## Purpose: This file is really from Digilent, and so the copyright
|
| 8 |
|
|
## statement below applies only to those changes that have been
|
| 9 |
|
|
## made to modify it to support the CMod S6 SoC project. That said ...
|
| 10 |
|
|
##
|
| 11 |
|
|
## This file specifies the pin connections for all of the peripherals
|
| 12 |
|
|
## connected to the Cmod S6 SoC.
|
| 13 |
|
|
##
|
| 14 |
|
|
## Further, this file is *specific* to the main ZipCPU build. Apparently,
|
| 15 |
|
|
## two top level files require two ucf files, so this file applies to the
|
| 16 |
|
|
## main ZipCPU build, and the other file to the alternate, auxiliary build.
|
| 17 |
|
|
##
|
| 18 |
|
|
##
|
| 19 |
|
|
## Creator: Dan Gisselquist, Ph.D.
|
| 20 |
|
|
## Gisselquist Technology, LLC
|
| 21 |
|
|
##
|
| 22 |
|
|
################################################################################
|
| 23 |
|
|
##
|
| 24 |
|
|
## Copyright (C) 2015-2016, Gisselquist Technology, LLC
|
| 25 |
|
|
##
|
| 26 |
|
|
## This program is free software (firmware): you can redistribute it and/or
|
| 27 |
|
|
## modify it under the terms of the GNU General Public License as published
|
| 28 |
|
|
## by the Free Software Foundation, either version 3 of the License, or (at
|
| 29 |
|
|
## your option) any later version.
|
| 30 |
|
|
##
|
| 31 |
|
|
## This program is distributed in the hope that it will be useful, but WITHOUT
|
| 32 |
|
|
## ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY or
|
| 33 |
|
|
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
| 34 |
|
|
## for more details.
|
| 35 |
|
|
##
|
| 36 |
|
|
## You should have received a copy of the GNU General Public License along
|
| 37 |
|
|
## with this program. (It's in the $(ROOT)/doc directory, run make with no
|
| 38 |
|
|
## target there if the PDF file isn't present.) If not, see
|
| 39 |
|
|
## for a copy.
|
| 40 |
|
|
##
|
| 41 |
|
|
## License: GPL, v3, as defined and found on www.gnu.org,
|
| 42 |
|
|
## http://www.gnu.org/licenses/gpl.html
|
| 43 |
|
|
##
|
| 44 |
|
|
##
|
| 45 |
|
|
################################################################################
|
| 46 |
|
|
##
|
| 47 |
|
|
##
|
| 48 |
|
|
|
| 49 |
|
|
#FPGA_GCLK
|
| 50 |
|
|
NET "i_clk_8mhz" LOC = "N8" | IOSTANDARD = LVCMOS33;
|
| 51 |
|
|
NET "i_clk_8mhz" TNM_NET = "i_clk_8mhz";
|
| 52 |
|
|
TIMESPEC "TSi_clk_8mhz" = PERIOD "i_clk_8mhz" 125.0 ns HIGH 50%;
|
| 53 |
|
|
|
| 54 |
|
|
#CLK_LFC
|
| 55 |
|
|
# NET "i_clk_pps" LOC = "N7" | IOSTANDARD = LVCMOS33;
|
| 56 |
|
|
|
| 57 |
|
|
#BTNs
|
| 58 |
|
|
NET "i_btn<0>" LOC = "P8" | IOSTANDARD = LVCMOS33;
|
| 59 |
|
|
NET "i_btn<1>" LOC = "P9" | IOSTANDARD = LVCMOS33;
|
| 60 |
|
|
|
| 61 |
|
|
#LEDs
|
| 62 |
|
|
NET "o_led<0>" LOC = "N3" | IOSTANDARD = LVCMOS33;
|
| 63 |
|
|
NET "o_led<1>" LOC = "P3" | IOSTANDARD = LVCMOS33;
|
| 64 |
|
|
NET "o_led<2>" LOC = "N4" | IOSTANDARD = LVCMOS33;
|
| 65 |
|
|
NET "o_led<3>" LOC = "P4" | IOSTANDARD = LVCMOS33;
|
| 66 |
|
|
|
| 67 |
|
|
# Flash
|
| 68 |
|
|
NET "o_qspi_sck" LOC="N13" | IOSTANDARD = LVCMOS33;
|
| 69 |
|
|
NET "o_qspi_cs_n" LOC="P2" | IOSTANDARD = LVCMOS33;
|
| 70 |
|
|
NET "io_qspi_dat<0>" LOC="P11" | IOSTANDARD = LVCMOS33;
|
| 71 |
|
|
NET "io_qspi_dat<1>" LOC="N11" | IOSTANDARD = LVCMOS33;
|
| 72 |
|
|
NET "io_qspi_dat<2>" LOC="N10" | IOSTANDARD = LVCMOS33;
|
| 73 |
|
|
NET "io_qspi_dat<3>" LOC="P10" | IOSTANDARD = LVCMOS33;
|
| 74 |
|
|
|
| 75 |
|
|
#DEPP Signals
|
| 76 |
|
|
# NET "o_depp_wait" LOC = "B6" | IOSTANDARD = LVCMOS33;
|
| 77 |
|
|
# NET "i_depp_astb_n" LOC = "A6" | IOSTANDARD = LVCMOS33;
|
| 78 |
|
|
# NET "i_depp_dstb_n" LOC = "B7" | IOSTANDARD = LVCMOS33;
|
| 79 |
|
|
# NET "i_depp_write_n" LOC = "A7" | IOSTANDARD = LVCMOS33;
|
| 80 |
|
|
# NET "io_depp_data<0>" LOC = "B9" | IOSTANDARD = LVCMOS33;
|
| 81 |
|
|
# NET "io_depp_data<1>" LOC = "A9" | IOSTANDARD = LVCMOS33;
|
| 82 |
|
|
# NET "io_depp_data<2>" LOC = "B10" | IOSTANDARD = LVCMOS33;
|
| 83 |
|
|
# NET "io_depp_data<3>" LOC = "A10" | IOSTANDARD = LVCMOS33;
|
| 84 |
|
|
# NET "io_depp_data<4>" LOC = "B11" | IOSTANDARD = LVCMOS33;
|
| 85 |
|
|
# NET "io_depp_data<5>" LOC = "A11" | IOSTANDARD = LVCMOS33;
|
| 86 |
|
|
# NET "io_depp_data<6>" LOC = "B12" | IOSTANDARD = LVCMOS33;
|
| 87 |
|
|
# NET "io_depp_data<7>" LOC = "A12" | IOSTANDARD = LVCMOS33;
|
| 88 |
|
|
|
| 89 |
|
|
#IO PORTs
|
| 90 |
|
|
|
| 91 |
|
|
# UART: PIO26 (CTS), PIO27 (TXD), PIO28(RXD), PIO29(RTS)
|
| 92 |
12 |
dgisselq |
NET "i_uart" LOC = "B3" | IOSTANDARD = LVCMOS33;
|
| 93 |
|
|
NET "o_uart" LOC = "A2" | IOSTANDARD = LVCMOS33;
|
| 94 |
|
|
NET "i_uart_rts" LOC = "B1" | IOSTANDARD = LVCMOS33;
|
| 95 |
|
|
NET "o_uart_cts" LOC = "A3" | IOSTANDARD = LVCMOS33;
|
| 96 |
11 |
dgisselq |
# PWM-Audio: Shutdown (PIO46), Gain (PIO47), PWM-Audio (PIO48)
|
| 97 |
|
|
NET "o_pwm" LOC = "M2" | IOSTANDARD = LVCMOS33;
|
| 98 |
|
|
NET "o_pwm_shutdown_n" LOC = "L2" | IOSTANDARD = LVCMOS33 | PULLUP;
|
| 99 |
|
|
NET "o_pwm_gain" LOC = "M1" | IOSTANDARD = LVCMOS33 | PULLUP;
|
| 100 |
|
|
# I2C
|
| 101 |
|
|
NET "io_scl" LOC = "E14" | IOSTANDARD = LVCMOS33 | PULLUP; # io_scl, PIO44
|
| 102 |
|
|
NET "io_sda" LOC = "G13" | IOSTANDARD = LVCMOS33 | PULLUP; # io_sda, PIO45
|
| 103 |
|
|
|
| 104 |
|
|
#
|
| 105 |
|
|
# o_gpio<0> and o_gpio<1> have been borrowed for io_scl and io_sda, hence we
|
| 106 |
|
|
# start our count here at 2
|
| 107 |
|
|
#
|
| 108 |
|
|
# NET "o_gpio<0>" LOC = "G13" | IOSTANDARD = LVCMOS33; # io_sda
|
| 109 |
|
|
# NET "o_gpio<1>" LOC = "E14" | IOSTANDARD = LVCMOS33; # io_scl
|
| 110 |
|
|
NET "o_gpio<2>" LOC = "D13" | IOSTANDARD = LVCMOS33; # display o_mosi
|
| 111 |
|
|
NET "o_gpio<3>" LOC = "E13" | IOSTANDARD = LVCMOS33; # display o_sck
|
| 112 |
|
|
NET "o_gpio<4>" LOC = "C13" | IOSTANDARD = LVCMOS33; # display o_ss
|
| 113 |
|
|
NET "o_gpio<5>" LOC = "G14" | IOSTANDARD = LVCMOS33;
|
| 114 |
|
|
NET "o_gpio<6>" LOC = "F13" | IOSTANDARD = LVCMOS33;
|
| 115 |
|
|
NET "o_gpio<7>" LOC = "F14" | IOSTANDARD = LVCMOS33;
|
| 116 |
|
|
NET "o_gpio<8>" LOC = "H13" | IOSTANDARD = LVCMOS33;
|
| 117 |
|
|
NET "o_gpio<9>" LOC = "H14" | IOSTANDARD = LVCMOS33;
|
| 118 |
|
|
NET "o_gpio<10>" LOC = "J13" | IOSTANDARD = LVCMOS33;
|
| 119 |
|
|
NET "o_gpio<11>" LOC = "J14" | IOSTANDARD = LVCMOS33;
|
| 120 |
|
|
NET "o_gpio<12>" LOC = "C1" | IOSTANDARD = LVCMOS33;
|
| 121 |
|
|
NET "o_gpio<13>" LOC = "D1" | IOSTANDARD = LVCMOS33;
|
| 122 |
|
|
NET "o_gpio<14>" LOC = "D2" | IOSTANDARD = LVCMOS33;
|
| 123 |
|
|
NET "o_gpio<15>" LOC = "E1" | IOSTANDARD = LVCMOS33;
|
| 124 |
|
|
|
| 125 |
|
|
#
|
| 126 |
|
|
# As with the o_gpio wires, i_gpio<0> and i_gpio<1> have been borrowed for
|
| 127 |
|
|
# io_scl and io_sda, hence we start our count here at 2
|
| 128 |
|
|
#
|
| 129 |
|
|
# NET "i_gpio<0>" LOC = "G13" | IOSTANDARD = LVCMOS33; # io_sda
|
| 130 |
|
|
# NET "i_gpio<1>" LOC = "E14" | IOSTANDARD = LVCMOS33; # io_scl
|
| 131 |
|
|
NET "i_gpio<2>" LOC = "D14" | IOSTANDARD = LVCMOS33; # display miso
|
| 132 |
|
|
NET "i_gpio<3>" LOC = "E2" | IOSTANDARD = LVCMOS33;
|
| 133 |
|
|
NET "i_gpio<4>" LOC = "F1" | IOSTANDARD = LVCMOS33;
|
| 134 |
|
|
NET "i_gpio<5>" LOC = "F2" | IOSTANDARD = LVCMOS33;
|
| 135 |
|
|
NET "i_gpio<6>" LOC = "H1" | IOSTANDARD = LVCMOS33;
|
| 136 |
|
|
NET "i_gpio<7>" LOC = "H2" | IOSTANDARD = LVCMOS33;
|
| 137 |
|
|
NET "i_gpio<8>" LOC = "G1" | IOSTANDARD = LVCMOS33;
|
| 138 |
|
|
NET "i_gpio<9>" LOC = "G2" | IOSTANDARD = LVCMOS33;
|
| 139 |
|
|
NET "i_gpio<10>" LOC = "J1" | IOSTANDARD = LVCMOS33;
|
| 140 |
|
|
NET "i_gpio<11>" LOC = "J2" | IOSTANDARD = LVCMOS33;
|
| 141 |
|
|
NET "i_gpio<12>" LOC = "K1" | IOSTANDARD = LVCMOS33;
|
| 142 |
|
|
NET "i_gpio<13>" LOC = "K2" | IOSTANDARD = LVCMOS33;
|
| 143 |
|
|
NET "i_gpio<14>" LOC = "L1" | IOSTANDARD = LVCMOS33;
|
| 144 |
|
|
NET "i_gpio<15>" LOC = "N12" | IOSTANDARD = LVCMOS33;
|
| 145 |
|
|
|
| 146 |
|
|
NET "o_kp_col<0>" LOC = "P5" | IOSTANDARD = LVCMOS33 | PULLUP;
|
| 147 |
|
|
NET "o_kp_col<1>" LOC = "N5" | IOSTANDARD = LVCMOS33 | PULLUP;
|
| 148 |
|
|
NET "o_kp_col<2>" LOC = "N6" | IOSTANDARD = LVCMOS33 | PULLUP;
|
| 149 |
|
|
NET "o_kp_col<3>" LOC = "P7" | IOSTANDARD = LVCMOS33 | PULLUP;
|
| 150 |
|
|
|
| 151 |
|
|
NET "i_kp_row<0>" LOC = "L14" | IOSTANDARD = LVCMOS33 | PULLUP;
|
| 152 |
|
|
NET "i_kp_row<1>" LOC = "L13" | IOSTANDARD = LVCMOS33 | PULLUP;
|
| 153 |
|
|
NET "i_kp_row<2>" LOC = "K14" | IOSTANDARD = LVCMOS33 | PULLUP;
|
| 154 |
|
|
NET "i_kp_row<3>" LOC = "K13" | IOSTANDARD = LVCMOS33 | PULLUP;
|
| 155 |
|
|
|