123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- # Check for the required nios2-download command
- # The command is only available in nios2_command_shell
- ifeq (, $(shell which nios2-download))
- $(error "This makefile must be executed within the nios2_command_shell")
- endif
-
- uname = $(shell uname -r)
- ifneq (,$(findstring Microsoft,${uname}))
- exe_suffix=.exe
- endif
-
- # Programm pathes
- quartus_root ?= ${QUARTUS_ROOTDIR}
- intel_root ?= $(quartus_root)/..
- sopc_root = $(quartus_root)/sopc_builder
-
- # Tools
- qsys_generate = $(sopc_root)/bin/qsys-generate$(exe_suffix)
- niosii_bsp = $(intel_root)/nios2eds/sdk2/bin/nios2-bsp
- quartus_map = quartus_map$(exe_suffix)
- quartus_fit = quartus_fit$(exe_suffix)
- quartus_asm = quartus_asm$(exe_suffix)
- quartus_sta = quartus_sta$(exe_suffix)
- nios2_bsp_generate_files = nios2-bsp-generate-files$(exe_suffix)
- quartus_pgm = quartus_pgm$(exe_suffix)
- nios2_download = nios2-download$(exe_suffix)
- nios2_terminal = nios2-terminal$(exe_suffix)
-
- # Directories
- niosii_dir = niosII
- bsp_dir = software/signal_processing_bsp
- app_dir = software/signal_processing
- hw_test_dir = tests/hardware
- sw_test_dir = tests/software
-
- # Settings
- quartus_project = signal_processing
- signal_processing_qsf = signal_processing.qsf
-
- # Sources
- niosii_qsys = niosII.qsys
-
- # Targets
- niosii_qip = $(niosii_dir)/synthesis/niosII.qip
- niosii_info = niosII.sopcinfo
-
- bsp_settings = $(bsp_dir)/settings.bsp
- bsp_makefile = $(bsp_dir)/Makefile
-
- # VHDL source files
- hdl_src += \
- hardware/system/sync_ff.vhd \
- hardware/system/sync_rst.vhd \
- hardware/system/pll/pll_main.vhd \
- hardware/system/reg32.vhd \
- hardware/system/avalon_slave_transitions.vhd \
- hardware/system/avalon_slave.vhd \
- hardware/system/data_sink_mux.vhd \
- hardware/system/fifo.vhd \
- hardware/system/data_source_mux.vhd \
- hardware/system/data_channel_control.vhd \
- hardware/system/data_channel.vhd \
- hardware/system/hardware_timestamp.vhd \
- hardware/system/task.vhd \
- hardware/system/float.vhd \
- hardware/system/hardware_task_control.vhd \
- hardware/system/hardware_task.vhd \
- hardware/system/float_add.vhd \
- hardware/signal_processing/add.vhd \
- hardware/system/task_add.vhd \
- hardware/signal_processing/rand.vhd \
- hardware/system/task_rand.vhd \
- hardware/system/cordic_pkg.vhd \
- hardware/system/cordic.vhd \
- hardware/system/fixed_sine.vhd \
- hardware/system/float_sine.vhd \
- hardware/signal_processing/sine.vhd \
- hardware/system/task_sine.vhd \
- hardware/system/Butterfly.v \
- hardware/system/DelayBuffer.v \
- hardware/system/FFT1024_32B.v \
- hardware/system/Multiply.v \
- hardware/system/SdfUnit2.v \
- hardware/system/SdfUnit.v \
- hardware/system/Twiddle1024_32B.v \
- hardware/system/squareRoot_pipe.vhd \
- hardware/system/fft_magnitude_calc.vhd \
- hardware/signal_processing/fft.vhd \
- hardware/system/task_fft.vhd \
- hardware/signal_processing/crc.vhd \
- hardware/system/task_crc.vhd \
- hardware/signal_processing/signal_processing.vhd \
-
- #
- clean_items += \
- $(niosii_dir) \
- $(niosii_info) \
- .map \
- .fitter \
- .assembler \
- .sta \
- .qsys_edit/ \
- db/ \
- incremental_db/ \
- output_files/ \
-
- .PHONY: all \
- niosII \
- fpga \
- program \
- clean \
- app \
- download \
- run \
- tests \
-
- all: run
-
- #------------------------------------------------------------------------------
- # Create the NiosII system from the description file
- niosII: $(niosii_info)
-
- # Create the NiosII sources from the description file
- $(niosii_qip): $(niosii_qsys)
- @echo Generating the NiosII system from $< ...
- @$(qsys_generate) -syn=VHDL $<
-
- # The NiosII system information file is created in parallel to the .qip file.
- $(niosii_info): $(niosii_qip)
-
- #------------------------------------------------------------------------------
- # Quartus FPGA toolchain contains the mapper, fitter, assembler and static
- # timing analysis (sta).
- #
- fpga: .sta
-
- # Anaylze and synthesis of the QuartusII project
- .map: $(hdl_src) $(niosii_info) $(signal_processing_qsf)
- @rm -f $@
- @$(quartus_map) --read_settings_files=on --write_settings_files=off $(quartus_project) -c $(quartus_project) && date > $@
-
- # Run the quartus fitter on the project
- .fitter: .map $(sdc_src) $(signal_processing_qsf)
- @rm -f $@
- @$(quartus_fit) --read_settings_files=on --write_settings_files=off $(quartus_project) -c $(quartus_project) && date > $@
-
- .assembler: .fitter
- @rm -f $@
- @$(quartus_asm) --read_settings_files=off --write_settings_files=off $(quartus_project) -c $(quartus_project)&& date > $@
-
- .sta: .assembler
- @rm -f $@
- @$(quartus_sta) $(quartus_project) -c $(quartus_project) && date > $@
-
- output_files/signal_processing_time_limited.sof: .sta
-
- # Create the BSP from the sopc description
- bsp: ${bsp_makefile}
-
- $(bsp_settings): $(niosii_info)
- @echo Generating the NiosII BSP from $< ...
- @$(niosii_bsp) hal $(bsp_dir) $<
-
- $(bsp_makefile): $(bsp_settings)
- @$(nios2_bsp_generate_files) --settings software/signal_processing_bsp/settings.bsp --bsp-dir software/signal_processing_bsp/
-
- app: $(bsp_makefile)
- ${MAKE} -C $(app_dir)
-
- # Programme the FPGA design
- program: output_files/signal_processing_time_limited.sof
- @$(quartus_pgm) signal_processing.cdf
-
- # Programme the NiosII software design
- download: app
- @$(nios2-download) $(app_dir)/signal_processing.elf -g
-
- # Programme the NiosII software design
- run: fpga download
- @$(nios2-terminal)
-
- sw_tests:
- @${MAKE} -C tests/software
-
- hw_tests:
- @${MAKE} -C tests/hardware
-
- device_tests:
- @${MAKE} -C tests/device
-
- tests: sw_tests hw_tests device_tests
-
- clean:
- @rm -rf $(clean_items)
- @${MAKE} -C ${hw_test_dir} clean
- @${MAKE} -C ${sw_test_dir} clean
- @${MAKE} -C ${app_dir} clean
- @${MAKE} -C ${bsp_dir} clean
|