summaryrefslogtreecommitdiffstats
path: root/fpga/hp_lcd_driver
diff options
context:
space:
mode:
Diffstat (limited to 'fpga/hp_lcd_driver')
-rw-r--r--fpga/hp_lcd_driver/.gitignore2
-rw-r--r--fpga/hp_lcd_driver/Makefile11
-rw-r--r--fpga/hp_lcd_driver/ep4ce15f23c8.mk132
-rw-r--r--fpga/hp_lcd_driver/ep4ce15f23c8_loader.mk24
-rw-r--r--fpga/hp_lcd_driver/flash_loader.loader_qsft25
-rw-r--r--fpga/hp_lcd_driver/flash_loader.vhdl102
-rw-r--r--fpga/hp_lcd_driver/quartus.mk135
7 files changed, 299 insertions, 132 deletions
diff --git a/fpga/hp_lcd_driver/.gitignore b/fpga/hp_lcd_driver/.gitignore
index a7f48f7..d7fb5c6 100644
--- a/fpga/hp_lcd_driver/.gitignore
+++ b/fpga/hp_lcd_driver/.gitignore
@@ -1,3 +1,5 @@
build_spartan6/
build_smh-ac415/
build_smh-ac415b/
+build_loader/
+NOT/
diff --git a/fpga/hp_lcd_driver/Makefile b/fpga/hp_lcd_driver/Makefile
index f9ce72b..4e2be26 100644
--- a/fpga/hp_lcd_driver/Makefile
+++ b/fpga/hp_lcd_driver/Makefile
@@ -1,4 +1,4 @@
-TARGETS= smh-ac415b #spartan6 #ep4ce6 smh-ac415
+TARGETS= smh-ac415b #spartan6 #ep4ce6 smh-ac415
#fish:smh-ac415
default: ${TARGETS:%=build_%/hp_lcd_driver.svf}
@@ -6,9 +6,18 @@ default: ${TARGETS:%=build_%/hp_lcd_driver.svf}
smh-ac415: build_smh-ac415/hp_lcd_driver.svf
spartan6: build_spartan6/hp_lcd_driver.svf
+
build_%/hp_lcd_driver.svf: dummy
${MAKE} -f ${@:build_%/hp_lcd_driver.svf=%}.mk
+build_smh-ac415/hp_lcd_driver.svf: build_flash_loader/output_files/flash_loader.sof
+
+build_flash_loader/output_files/flash_loader.sof: dummy
+ ${MAKE} -f ep4ce15f23c8_loader.mk
+
+
+
+
clean:
for i in ${TARGETS}; do ${MAKE} -f $$i.mk $@; done
diff --git a/fpga/hp_lcd_driver/ep4ce15f23c8.mk b/fpga/hp_lcd_driver/ep4ce15f23c8.mk
index 390dc5b..7597aad 100644
--- a/fpga/hp_lcd_driver/ep4ce15f23c8.mk
+++ b/fpga/hp_lcd_driver/ep4ce15f23c8.mk
@@ -17,137 +17,7 @@ ASM_ARGS =
STA_ARGS =
CPF_ARGS = -c -q 1MHZ -g 3.3 -n p
-GEN_VSRCS=${IPS:%.vhdl=${BUILD}/%.vhd}
-QIP=${GEN_VSRCS:%.vhd=%.qip}
-BASE=${BUILD}/${DESIGN_NAME}
-QSF=${BASE}.qsf
-QPF=${BASE}.qpf
-MAP=${BUILD}/${OF}/$(PROJECT).map.rpt
-FIT=${BUILD}/${OF}/$(PROJECT).fit.rpt
-ASM=${BUILD}/${OF}/$(PROJECT).asm.rpt
-ASM=${BUILD}/${OF}/$(PROJECT).sta.rpt
-SOF=${BUILD}/${OF}/${PROJECT}.sof
-COF=${BUILD}/${OF}/${PROJECT}.cof
-JIC=${BUILD}/${OF}/${PROJECT}.jic
-CDF=${BUILD}/${OF}/${PROJECT}.cdf
-SVF=${BUILD}/${PROJECT}.svf
-PSVF=${BUILD}/${PROJECT}-p.svf
-default:${SVF} ${PSVF}
- echo ${PSVF}
-
-
-${BUILD}/%.vhd ${BUILD}/%.qip:%.vhdl
- cat $< > ${BUILD}/${<:%.vhdl=%.vhd}
- (cd ${BUILD} && ../scripts/run_in_x run_quartus qmegawiz -silent $(call relpath,${BUILD}/${<:%.vhdl=%.vhd},${BUILD}))
-
-
-${QSF}: ${PRJ} ${DESIGN_NAME}.${BOARD}_qsft
- mkdir -p ${BUILD}
- rm -f $@
- echo 'set_global_assignment -name TOP_LEVEL_ENTITY ${TOP}' >> $@
- echo 'set_global_assignment -name FAMILY "${FAMILY}"' >> $@
- echo 'set_global_assignment -name PROJECT_OUTPUT_DIRECTORY ${OF}' >> $@
- echo 'set_global_assignment -name DEVICE ${PART}' >> $@
- cat ${DESIGN_NAME}.${BOARD}_qsft >> $@
- for file in ${GEN_VSRCS} ${VSRCS}; do \
- echo "set_global_assignment -name VHDL_FILE $$(realpath -m --relative-to=${BUILD} $${file})" >> $@; \
- done
-
-
-
-${QPF}:
- mkdir -p ${BUILD}
- rm -f $@
- echo 'PROJECT_REVISION = "${TOP}"' > $@
-
-
-map: ${MAP}
-${MAP}: ${VSRCS} ${QPF} ${QSF} ${GEN_VSRCS} ${QIP}
- (cd ${BUILD} && run_quartus quartus_map $(MAP_ARGS) ${PROJECT})
-
-fit: ${FIT}
-${FIT}:${MAP}
- (cd ${BUILD} && run_quartus quartus_fit $(FIT_ARGS) $(PROJECT))
-
-asm: ${ASM}
-sof: ${ASM}
-${SOF} ${ASM}:${FIT}
- (cd ${BUILD} && run_quartus quartus_asm $(ASM_ARGS) $(PROJECT))
-
-sta: ${STA}
-${STA}:${FIT}
- (cd ${BUILD} && run_quartus quartus_sta $(STA_ARGS) $(PROJECT))
-
-
-svf:${SVF}
-${SVF}:${SOF}
- (cd ${BUILD} && run_quartus quartus_cpf ${CPF_ARGS} $(call relpath,$<,${BUILD}) $(call relpath,$@,${BUILD}) )
-${JIC}:${SOF}
- (cd ${BUILD} && run_quartus quartus_cpf -c -s ${PART} -d ${CPART} $(call relpath,$<,${BUILD}) $(call relpath,$@,${BUILD}) )
-
-
-${CDF}:${JIC}
- echo 'JedecChain;' > $@
- echo ' FileRevision(JESD32A);' >> $@
- echo ' DefaultMfr(6E);' >> $@
- echo '' >> $@
- echo ' P ActionCode(Ign)' >> $@
- echo ' Device PartName(EP4CE15F23) Path("/root/projects/hp_instrument_lcds/fpga/hp_lcd_driver/fl2/output_files/") File("flash_loader.sof") MfrSpec(OpMask(1) SEC_Device(EPCS16) Child_OpMask(1 1) SFLPath("$(call abspath,${JIC})"));' >> $@
- echo '' >> $@
- echo 'ChainEnd;' >> $@
- echo '' >> $@
- echo 'AlteraBegin;' >> $@
- echo ' ChainType(JTAG);' >> $@
- echo 'AlteraEnd;' >> $@
-
-${PSVF}:${CDF}
- (cd ${BUILD} && run_quartus quartus_cpf ${CPF_ARGS} $(call relpath,$<,${BUILD}) $(call relpath,$@,${BUILD}) )
-
-
-
-tidy:
- git diff --exit-code -s ${VSRCS}
- for i in ${VSRCS}; do /bin/cp -f $$i $$i.orig && scripts/vhdl-pretty < $$i.orig > $$i; done
-
-
-
-#
-#
-##OPENOCD=openocd -f interface/altera-usb-blaster.cfg -f cpld/altera-epm240.cfg
-#
-#FIT_ARGS =
-#ASM_ARGS =
-#
-#SVF=${PROJECT}.svf
-#
-#
-#
-#default: ${SVF}
-#
-#${SVF}: ${BUILD}/${PROJECT}.svf
-# cat $< > $@ || /bin/rm -f $@
-#
-#program: ${SVF}
-# ${OPENOCD} -c "init; svf $<; exit"
-#
-#all: ${BUILD}/$(PROJECT).asm.rpt ${BUILD}/$(PROJECT).sta.rpt ${BUILD}/${PROJECT}.svf
-#
-clean:
- rm -rf db ${BUILD} *.orig *.bak incremental_db db
-
-#
-#
-#
-#
-#
-#
-
-#tidy:
-# for i in ${SOURCE_FILES}; do /bin/cp -f $$i $$i.orig && scripts/vhdl-pretty < $$i.orig > $$i; done
-#
-#
-
-.PRECIOUS:
+include quartus.mk
diff --git a/fpga/hp_lcd_driver/ep4ce15f23c8_loader.mk b/fpga/hp_lcd_driver/ep4ce15f23c8_loader.mk
new file mode 100644
index 0000000..1ad68f0
--- /dev/null
+++ b/fpga/hp_lcd_driver/ep4ce15f23c8_loader.mk
@@ -0,0 +1,24 @@
+include relpath.mk
+
+FAMILY=Cyclone IV E
+PART=EP4CE15F23C8
+CPART=EPCS16
+TOP=flash_loader
+BOARD=loader
+BUILD=build_${BOARD}
+OF=output_files
+
+PROJECT = flash_loader
+VSRCS =
+IPS= flash_loader.vhdl
+
+DESIGN_NAME=${TOP}
+
+MAP_ARGS = --smart
+FIT_ARGS =
+ASM_ARGS =
+STA_ARGS =
+CPF_ARGS = -c -q 1MHZ -g 3.3 -n p
+
+include quartus.mk
+
diff --git a/fpga/hp_lcd_driver/flash_loader.loader_qsft b/fpga/hp_lcd_driver/flash_loader.loader_qsft
new file mode 100644
index 0000000..0e45e44
--- /dev/null
+++ b/fpga/hp_lcd_driver/flash_loader.loader_qsft
@@ -0,0 +1,25 @@
+#set_global_assignment -name ORIGINAL_QUARTUS_VERSION "13.0 SP1"
+#set_global_assignment -name PROJECT_CREATION_TIME_DATE "11:47:00 APRIL 20, 2025"
+#set_global_assignment -name LAST_QUARTUS_VERSION "13.0 SP1"
+
+set_parameter -name target "cyclone4"
+
+set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
+set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
+set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 1
+set_global_assignment -name NOMINAL_CORE_SUPPLY_VOLTAGE 1.2V
+set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim-Altera (VHDL)"
+set_global_assignment -name EDA_OUTPUT_DATA_FORMAT VHDL -section_id eda_simulation
+set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW"
+set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)"
+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_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL"
+set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION OFF
+set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
+
+
+
+
+
diff --git a/fpga/hp_lcd_driver/flash_loader.vhdl b/fpga/hp_lcd_driver/flash_loader.vhdl
new file mode 100644
index 0000000..41eb1df
--- /dev/null
+++ b/fpga/hp_lcd_driver/flash_loader.vhdl
@@ -0,0 +1,102 @@
+-- megafunction wizard: %Serial Flash Loader%
+-- GENERATION: STANDARD
+-- VERSION: WM1.0
+-- MODULE: altserial_flash_loader
+
+-- ============================================================
+-- File Name: flash_loader.vhd
+-- Megafunction Name(s):
+-- altserial_flash_loader
+--
+-- Simulation Library Files(s):
+-- altera_mf
+-- ============================================================
+-- ************************************************************
+-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
+--
+-- 13.0.1 Build 232 06/12/2013 SP 1 SJ Web Edition
+-- ************************************************************
+
+
+--Copyright (C) 1991-2013 Altera Corporation
+--Your use of Altera Corporation's design tools, logic functions
+--and other software and tools, and its AMPP partner logic
+--functions, and any output files from any of the foregoing
+--(including device programming or simulation files), and any
+--associated documentation or information are expressly subject
+--to the terms and conditions of the Altera Program License
+--Subscription Agreement, Altera MegaCore Function License
+--Agreement, or other applicable license agreement, including,
+--without limitation, that your use is for the sole purpose of
+--programming logic devices manufactured by Altera and sold by
+--Altera or its authorized distributors. Please refer to the
+--applicable agreement for further details.
+
+
+LIBRARY ieee;
+USE ieee.std_logic_1164.all;
+
+LIBRARY altera_mf;
+USE altera_mf.all;
+
+ENTITY flash_loader IS
+ PORT
+ (
+ noe_in : IN STD_LOGIC
+ );
+END flash_loader;
+
+
+ARCHITECTURE SYN OF flash_loader IS
+
+
+
+
+ COMPONENT altserial_flash_loader
+ GENERIC (
+ enable_quad_spi_support : NATURAL;
+ enable_shared_access : STRING;
+ enhanced_mode : NATURAL;
+ intended_device_family : STRING;
+ lpm_type : STRING
+ );
+ PORT (
+ noe : IN STD_LOGIC
+ );
+ END COMPONENT;
+
+BEGIN
+
+ altserial_flash_loader_component : altserial_flash_loader
+ GENERIC MAP (
+ enable_quad_spi_support => 0,
+ enable_shared_access => "OFF",
+ enhanced_mode => 1,
+ intended_device_family => "Cyclone IV E",
+ lpm_type => "altserial_flash_loader"
+ )
+ PORT MAP (
+ noe => noe_in
+ );
+
+
+
+END SYN;
+
+-- ============================================================
+-- CNX file retrieval info
+-- ============================================================
+-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E"
+-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
+-- Retrieval info: CONSTANT: ENABLE_QUAD_SPI_SUPPORT NUMERIC "0"
+-- Retrieval info: CONSTANT: ENABLE_SHARED_ACCESS STRING "OFF"
+-- Retrieval info: CONSTANT: ENHANCED_MODE NUMERIC "1"
+-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E"
+-- Retrieval info: USED_PORT: noe_in 0 0 0 0 INPUT NODEFVAL "noe_in"
+-- Retrieval info: CONNECT: @noe 0 0 0 0 noe_in 0 0 0 0
+-- Retrieval info: GEN_FILE: TYPE_NORMAL flash_loader.vhd TRUE
+-- Retrieval info: GEN_FILE: TYPE_NORMAL flash_loader.inc FALSE
+-- Retrieval info: GEN_FILE: TYPE_NORMAL flash_loader.cmp TRUE
+-- Retrieval info: GEN_FILE: TYPE_NORMAL flash_loader.bsf FALSE
+-- Retrieval info: GEN_FILE: TYPE_NORMAL flash_loader.vhd FALSE
+-- Retrieval info: LIB_FILE: altera_mf
diff --git a/fpga/hp_lcd_driver/quartus.mk b/fpga/hp_lcd_driver/quartus.mk
new file mode 100644
index 0000000..9d1cd0c
--- /dev/null
+++ b/fpga/hp_lcd_driver/quartus.mk
@@ -0,0 +1,135 @@
+GEN_VSRCS=${IPS:%.vhdl=${BUILD}/%.vhd}
+QIP=${GEN_VSRCS:%.vhd=%.qip}
+
+BASE=${BUILD}/${DESIGN_NAME}
+QSF=${BASE}.qsf
+QPF=${BASE}.qpf
+MAP=${BUILD}/${OF}/$(PROJECT).map.rpt
+FIT=${BUILD}/${OF}/$(PROJECT).fit.rpt
+ASM=${BUILD}/${OF}/$(PROJECT).asm.rpt
+ASM=${BUILD}/${OF}/$(PROJECT).sta.rpt
+SOF=${BUILD}/${OF}/${PROJECT}.sof
+COF=${BUILD}/${OF}/${PROJECT}.cof
+JIC=${BUILD}/${OF}/${PROJECT}.jic
+CDF=${BUILD}/${OF}/${PROJECT}.cdf
+SVF=${BUILD}/${PROJECT}.svf
+PSVF=${BUILD}/${PROJECT}-p.svf
+
+default:${SVF} ${PSVF}
+ echo ${PSVF}
+
+
+${BUILD}/%.vhd ${BUILD}/%.qip:%.vhdl
+ cat $< > ${BUILD}/${<:%.vhdl=%.vhd}
+ (cd ${BUILD} && ../scripts/run_in_x run_quartus qmegawiz -silent $(call relpath,${BUILD}/${<:%.vhdl=%.vhd},${BUILD}))
+
+
+${QSF}: ${PRJ} ${DESIGN_NAME}.${BOARD}_qsft
+ mkdir -p ${BUILD}
+ rm -f $@
+ echo 'set_global_assignment -name TOP_LEVEL_ENTITY ${TOP}' >> $@
+ echo 'set_global_assignment -name FAMILY "${FAMILY}"' >> $@
+ echo 'set_global_assignment -name PROJECT_OUTPUT_DIRECTORY ${OF}' >> $@
+ echo 'set_global_assignment -name DEVICE ${PART}' >> $@
+ cat ${DESIGN_NAME}.${BOARD}_qsft >> $@
+ for file in ${GEN_VSRCS} ${VSRCS}; do \
+ echo "set_global_assignment -name VHDL_FILE $$(realpath -m --relative-to=${BUILD} $${file})" >> $@; \
+ done
+
+
+
+${QPF}:
+ mkdir -p ${BUILD}
+ rm -f $@
+ echo 'PROJECT_REVISION = "${TOP}"' > $@
+
+
+map: ${MAP}
+${MAP}: ${VSRCS} ${QPF} ${QSF} ${GEN_VSRCS} ${QIP}
+ (cd ${BUILD} && run_quartus quartus_map $(MAP_ARGS) ${PROJECT})
+
+fit: ${FIT}
+${FIT}:${MAP}
+ (cd ${BUILD} && run_quartus quartus_fit $(FIT_ARGS) $(PROJECT))
+
+asm: ${ASM}
+sof: ${ASM}
+${SOF} ${ASM}:${FIT}
+ (cd ${BUILD} && run_quartus quartus_asm $(ASM_ARGS) $(PROJECT))
+
+sta: ${STA}
+${STA}:${FIT}
+ (cd ${BUILD} && run_quartus quartus_sta $(STA_ARGS) $(PROJECT))
+
+
+svf:${SVF}
+${SVF}:${SOF}
+ (cd ${BUILD} && run_quartus quartus_cpf ${CPF_ARGS} $(call relpath,$<,${BUILD}) $(call relpath,$@,${BUILD}) )
+
+${JIC}:${SOF}
+ (cd ${BUILD} && run_quartus quartus_cpf -c -s ${PART} -d ${CPART} $(call relpath,$<,${BUILD}) $(call relpath,$@,${BUILD}) )
+
+
+${CDF}:${JIC}
+ echo 'JedecChain;' > $@
+ echo ' FileRevision(JESD32A);' >> $@
+ echo ' DefaultMfr(6E);' >> $@
+ echo '' >> $@
+ echo ' P ActionCode(Ign)' >> $@
+ echo ' Device PartName(EP4CE15F23) Path("$(call abspath,build_loader/output_files)/") File("flash_loader.sof") MfrSpec(OpMask(1) SEC_Device(EPCS16) Child_OpMask(1 1) SFLPath("$(call abspath,${JIC})"));' >> $@
+ echo '' >> $@
+ echo 'ChainEnd;' >> $@
+ echo '' >> $@
+ echo 'AlteraBegin;' >> $@
+ echo ' ChainType(JTAG);' >> $@
+ echo 'AlteraEnd;' >> $@
+
+${PSVF}:${CDF}
+ (cd ${BUILD} && run_quartus quartus_cpf ${CPF_ARGS} $(call relpath,$<,${BUILD}) $(call relpath,$@,${BUILD}) )
+
+
+
+tidy:
+ git diff --exit-code -s ${VSRCS}
+ for i in ${VSRCS}; do /bin/cp -f $$i $$i.orig && scripts/vhdl-pretty < $$i.orig > $$i; done
+
+
+
+#
+#
+##OPENOCD=openocd -f interface/altera-usb-blaster.cfg -f cpld/altera-epm240.cfg
+#
+#FIT_ARGS =
+#ASM_ARGS =
+#
+#SVF=${PROJECT}.svf
+#
+#
+#
+#default: ${SVF}
+#
+#${SVF}: ${BUILD}/${PROJECT}.svf
+# cat $< > $@ || /bin/rm -f $@
+#
+#program: ${SVF}
+# ${OPENOCD} -c "init; svf $<; exit"
+#
+#all: ${BUILD}/$(PROJECT).asm.rpt ${BUILD}/$(PROJECT).sta.rpt ${BUILD}/${PROJECT}.svf
+#
+clean:
+ rm -rf db ${BUILD} *.orig *.bak incremental_db db
+
+#
+#
+#
+#
+#
+#
+
+#tidy:
+# for i in ${SOURCE_FILES}; do /bin/cp -f $$i $$i.orig && scripts/vhdl-pretty < $$i.orig > $$i; done
+#
+#
+
+.PRECIOUS:
+