From 36196bab0f51f520bdf58de46f36fc91dbdf4c4e Mon Sep 17 00:00:00 2001 From: etherton Date: Sat, 11 Jul 2020 16:04:20 +0100 Subject: [PATCH] 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. --- boards/terasic_de0cv/Quartus/apple-one.qpf | 6 + boards/terasic_de0cv/Quartus/apple-one.qsf | 240 +++++++++++++++++++++ boards/terasic_de0cv/Quartus/apple-one.sdc | 83 +++++++ 3 files changed, 329 insertions(+) create mode 100644 boards/terasic_de0cv/Quartus/apple-one.qpf create mode 100644 boards/terasic_de0cv/Quartus/apple-one.qsf create mode 100644 boards/terasic_de0cv/Quartus/apple-one.sdc diff --git a/boards/terasic_de0cv/Quartus/apple-one.qpf b/boards/terasic_de0cv/Quartus/apple-one.qpf new file mode 100644 index 0000000..84b659a --- /dev/null +++ b/boards/terasic_de0cv/Quartus/apple-one.qpf @@ -0,0 +1,6 @@ +DATE = "14:46:44 July 11, 2020" +QUARTUS_VERSION = "14.0" + +# Revisions + +PROJECT_REVISION = "apple-one" diff --git a/boards/terasic_de0cv/Quartus/apple-one.qsf b/boards/terasic_de0cv/Quartus/apple-one.qsf new file mode 100644 index 0000000..c56bb00 --- /dev/null +++ b/boards/terasic_de0cv/Quartus/apple-one.qsf @@ -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 \ No newline at end of file diff --git a/boards/terasic_de0cv/Quartus/apple-one.sdc b/boards/terasic_de0cv/Quartus/apple-one.sdc new file mode 100644 index 0000000..4debd37 --- /dev/null +++ b/boards/terasic_de0cv/Quartus/apple-one.sdc @@ -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 +#************************************************************** + + +