Terasic DE0-CV board support

Added support for the Terasic DE0-CV board (Cyclone V), not to be confused with the original DE0.

Note the keyboard doesn't seem to work; this may be defective hardware on my end but I don't have a spare to compare it against.
This commit is contained in:
etherton 2020-07-11 16:04:20 +01:00
parent 10bb57a33e
commit 36196bab0f
3 changed files with 329 additions and 0 deletions

View File

@ -0,0 +1,6 @@
DATE = "14:46:44 July 11, 2020"
QUARTUS_VERSION = "14.0"
# Revisions
PROJECT_REVISION = "apple-one"

View File

@ -0,0 +1,240 @@
#============================================================
# Build by Terasic System Builder
#============================================================
set_global_assignment -name FAMILY "Cyclone V"
set_global_assignment -name DEVICE 5CEBA4F23C7
set_global_assignment -name TOP_LEVEL_ENTITY "apple1_de0_top"
set_global_assignment -name ORIGINAL_QUARTUS_VERSION 14.0
set_global_assignment -name LAST_QUARTUS_VERSION "17.0.2 Lite Edition"
set_global_assignment -name PROJECT_CREATION_TIME_DATE "14:46:44 JULY 11,2020"
set_global_assignment -name DEVICE_FILTER_PACKAGE FBGA
set_global_assignment -name DEVICE_FILTER_PIN_COUNT 484
set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 7
#============================================================
# CLOCK
#============================================================
set_location_assignment PIN_M9 -to CLOCK_50
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK_50
set_location_assignment PIN_H13 -to CLOCK2_50
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK2_50
set_location_assignment PIN_E10 -to CLOCK3_50
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK3_50
set_location_assignment PIN_V15 -to CLOCK4_50
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK4_50
#============================================================
# SEG7
#============================================================
set_location_assignment PIN_U21 -to HEX0_D[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0_D[0]
set_location_assignment PIN_V21 -to HEX0_D[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0_D[1]
set_location_assignment PIN_W22 -to HEX0_D[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0_D[2]
set_location_assignment PIN_W21 -to HEX0_D[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0_D[3]
set_location_assignment PIN_Y22 -to HEX0_D[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0_D[4]
set_location_assignment PIN_Y21 -to HEX0_D[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0_D[5]
set_location_assignment PIN_AA22 -to HEX0_D[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0_D[6]
set_location_assignment PIN_AA20 -to HEX1_D[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1_D[0]
set_location_assignment PIN_AB20 -to HEX1_D[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1_D[1]
set_location_assignment PIN_AA19 -to HEX1_D[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1_D[2]
set_location_assignment PIN_AA18 -to HEX1_D[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1_D[3]
set_location_assignment PIN_AB18 -to HEX1_D[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1_D[4]
set_location_assignment PIN_AA17 -to HEX1_D[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1_D[5]
set_location_assignment PIN_U22 -to HEX1_D[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1_D[6]
set_location_assignment PIN_Y19 -to HEX2_D[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2_D[0]
set_location_assignment PIN_AB17 -to HEX2_D[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2_D[1]
set_location_assignment PIN_AA10 -to HEX2_D[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2_D[2]
set_location_assignment PIN_Y14 -to HEX2_D[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2_D[3]
set_location_assignment PIN_V14 -to HEX2_D[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2_D[4]
set_location_assignment PIN_AB22 -to HEX2_D[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2_D[5]
set_location_assignment PIN_AB21 -to HEX2_D[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2_D[6]
set_location_assignment PIN_Y16 -to HEX3_D[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3_D[0]
set_location_assignment PIN_W16 -to HEX3_D[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3_D[1]
set_location_assignment PIN_Y17 -to HEX3_D[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3_D[2]
set_location_assignment PIN_V16 -to HEX3_D[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3_D[3]
set_location_assignment PIN_U17 -to HEX3_D[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3_D[4]
set_location_assignment PIN_V18 -to HEX3_D[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3_D[5]
set_location_assignment PIN_V19 -to HEX3_D[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3_D[6]
set_location_assignment PIN_U20 -to HEX4_D[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4_D[0]
set_location_assignment PIN_Y20 -to HEX4_D[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4_D[1]
set_location_assignment PIN_V20 -to HEX4_D[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4_D[2]
set_location_assignment PIN_U16 -to HEX4_D[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4_D[3]
set_location_assignment PIN_U15 -to HEX4_D[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4_D[4]
set_location_assignment PIN_Y15 -to HEX4_D[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4_D[5]
set_location_assignment PIN_P9 -to HEX4_D[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4_D[6]
set_location_assignment PIN_N9 -to HEX5_D[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5_D[0]
set_location_assignment PIN_M8 -to HEX5_D[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5_D[1]
set_location_assignment PIN_T14 -to HEX5_D[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5_D[2]
set_location_assignment PIN_P14 -to HEX5_D[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5_D[3]
set_location_assignment PIN_C1 -to HEX5_D[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5_D[4]
set_location_assignment PIN_C2 -to HEX5_D[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5_D[5]
set_location_assignment PIN_W19 -to HEX5_D[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5_D[6]
#============================================================
# KEY
#============================================================
set_location_assignment PIN_U7 -to KEY[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to KEY[0]
set_location_assignment PIN_W9 -to KEY[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to KEY[1]
set_location_assignment PIN_M7 -to KEY[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to KEY[2]
set_location_assignment PIN_M6 -to KEY[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to KEY[3]
set_location_assignment PIN_P22 -to RESET_N
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to RESET_N
#============================================================
# LED
#============================================================
set_location_assignment PIN_AA2 -to LEDG[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[0]
set_location_assignment PIN_AA1 -to LEDG[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[1]
set_location_assignment PIN_W2 -to LEDG[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[2]
set_location_assignment PIN_Y3 -to LEDG[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[3]
set_location_assignment PIN_N2 -to LEDG[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[4]
set_location_assignment PIN_N1 -to LEDG[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[5]
set_location_assignment PIN_U2 -to LEDG[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[6]
set_location_assignment PIN_U1 -to LEDG[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[7]
set_location_assignment PIN_L2 -to LEDG[8]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[8]
set_location_assignment PIN_L1 -to LEDG[9]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[9]
#============================================================
# PS2
#============================================================
set_location_assignment PIN_D3 -to PS2_KBCLK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to PS2_KBCLK
set_location_assignment PIN_E2 -to PS2_KBCLK2
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to PS2_KBCLK2
set_location_assignment PIN_G2 -to PS2_KBDAT
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to PS2_KBDAT
set_location_assignment PIN_G1 -to PS2_KBDAT2
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to PS2_KBDAT2
#============================================================
# microSD Card
#============================================================
set_location_assignment PIN_H11 -to SD_CLK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_CLK
set_location_assignment PIN_B11 -to SD_CMD
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_CMD
set_location_assignment PIN_K9 -to SD_DATA[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_DATA[0]
set_location_assignment PIN_D12 -to SD_DATA[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_DATA[1]
set_location_assignment PIN_E12 -to SD_DATA[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_DATA[2]
set_location_assignment PIN_C11 -to SD_DATA[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SD_DATA[3]
#============================================================
# VGA
#============================================================
set_location_assignment PIN_B6 -to VGA_B[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[0]
set_location_assignment PIN_B7 -to VGA_B[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[1]
set_location_assignment PIN_A8 -to VGA_B[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[2]
set_location_assignment PIN_A7 -to VGA_B[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[3]
set_location_assignment PIN_L7 -to VGA_G[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[0]
set_location_assignment PIN_K7 -to VGA_G[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[1]
set_location_assignment PIN_J7 -to VGA_G[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[2]
set_location_assignment PIN_J8 -to VGA_G[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[3]
set_location_assignment PIN_H8 -to VGA_HS
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_HS
set_location_assignment PIN_A9 -to VGA_R[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[0]
set_location_assignment PIN_B10 -to VGA_R[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[1]
set_location_assignment PIN_C9 -to VGA_R[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[2]
set_location_assignment PIN_A5 -to VGA_R[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[3]
set_location_assignment PIN_G8 -to VGA_VS
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_VS
#============================================================
# End of pin assignments by Terasic System Builder
#============================================================
set_global_assignment -name VERILOG_FILE ../../../rtl/ps2keyboard/debounce.v
set_global_assignment -name VERILOG_FILE ../../../rtl/vga/vram.v
set_global_assignment -name VERILOG_FILE ../../../rtl/vga/vga.v
set_global_assignment -name VERILOG_FILE ../../../rtl/vga/font_rom.v
set_global_assignment -name VERILOG_FILE ../../../rtl/pwr_reset.v
set_global_assignment -name VERILOG_FILE ../../../rtl/clock.v
set_global_assignment -name VERILOG_FILE ../../../rtl/rom_basic.v
set_global_assignment -name VERILOG_FILE ../../../rtl/ps2keyboard/ps2keyboard.v
set_global_assignment -name VERILOG_FILE ../../../rtl/boards/terasic_de0/segmentdisplay.v
set_global_assignment -name VERILOG_FILE ../../../rtl/cpu/arlet/cpu.v
set_global_assignment -name VERILOG_FILE ../../../rtl/cpu/arlet/ALU.v
set_global_assignment -name VERILOG_FILE ../../../rtl/cpu/arlet_6502.v
set_global_assignment -name VERILOG_FILE ../../../rtl/apple1.v
set_global_assignment -name SDC_FILE "apple-one.sdc"
set_global_assignment -name VERILOG_FILE ../../../rtl/boards/terasic_de0/apple1_de0_top.v
set_global_assignment -name VERILOG_FILE ../../../rtl/uart/uart.v
set_global_assignment -name VERILOG_FILE ../../../rtl/uart/async_tx_rx.v
set_global_assignment -name VERILOG_FILE ../../../rtl/rom_wozmon.v
set_global_assignment -name VERILOG_FILE ../../../rtl/ram.v
set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top
set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top
set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top

View File

@ -0,0 +1,83 @@
#**************************************************************
# This .sdc file is created by Terasic Tool.
# Users are recommended to modify this file to match users logic.
#**************************************************************
#**************************************************************
# Create Clock
#**************************************************************
create_clock -period "50.0 MHz" [get_ports CLOCK_50]
#**************************************************************
# Create Generated Clock
#**************************************************************
derive_pll_clocks
create_generated_clock -divide_by 2 -source [get_ports CLOCK_50] -name clk25 [get_registers clk25]
#**************************************************************
# Set Clock Latency
#**************************************************************
#**************************************************************
# Set Clock Uncertainty
#**************************************************************
derive_clock_uncertainty
#**************************************************************
# Set Input Delay
#**************************************************************
#**************************************************************
# Set Output Delay
#**************************************************************
#**************************************************************
# Set Clock Groups
#**************************************************************
#**************************************************************
# Set False Path
#**************************************************************
#**************************************************************
# Set Multicycle Path
#**************************************************************
#**************************************************************
# Set Maximum Delay
#**************************************************************
#**************************************************************
# Set Minimum Delay
#**************************************************************
#**************************************************************
# Set Input Transition
#**************************************************************
#**************************************************************
# Set Load
#**************************************************************