From 647f63e6b519e7ba9e5d6c189bd1c1d7786135c0 Mon Sep 17 00:00:00 2001 From: lonkaars Date: Sat, 18 Mar 2023 16:55:36 +0100 Subject: note-synth done and tested --- .../eindopdracht.srcs/constrs_1/new/io.xdc | 20 ++++++++ eindopdracht/eindopdracht.srcs/note-synth-top.vhd | 35 ++++++++++++++ eindopdracht/eindopdracht.xpr | 54 ++++++++++++++++------ src/note-synth.vhd | 46 +++++++++++++++++- 4 files changed, 141 insertions(+), 14 deletions(-) create mode 100644 eindopdracht/eindopdracht.srcs/constrs_1/new/io.xdc create mode 100644 eindopdracht/eindopdracht.srcs/note-synth-top.vhd diff --git a/eindopdracht/eindopdracht.srcs/constrs_1/new/io.xdc b/eindopdracht/eindopdracht.srcs/constrs_1/new/io.xdc new file mode 100644 index 0000000..b51eb8f --- /dev/null +++ b/eindopdracht/eindopdracht.srcs/constrs_1/new/io.xdc @@ -0,0 +1,20 @@ +set_property IOSTANDARD LVCMOS33 [get_ports GLOBAL_MUTE] +set_property IOSTANDARD LVCMOS33 [get_ports NOTE_PLAY] +set_property IOSTANDARD LVCMOS33 [get_ports NOTE_WRONG] +set_property IOSTANDARD LVCMOS33 [get_ports SYSCLK] +set_property IOSTANDARD LVCMOS33 [get_ports SYSRESET] +set_property IOSTANDARD LVCMOS33 [get_ports {NOTE_IDX[3]}] +set_property IOSTANDARD LVCMOS33 [get_ports {NOTE_IDX[2]}] +set_property IOSTANDARD LVCMOS33 [get_ports {NOTE_IDX[1]}] +set_property IOSTANDARD LVCMOS33 [get_ports {NOTE_IDX[0]}] +set_property IOSTANDARD LVCMOS33 [get_ports PWM_OUT] +set_property PACKAGE_PIN A15 [get_ports PWM_OUT] +set_property PACKAGE_PIN U18 [get_ports SYSRESET] +set_property PACKAGE_PIN W5 [get_ports SYSCLK] +set_property PACKAGE_PIN W17 [get_ports {NOTE_IDX[3]}] +set_property PACKAGE_PIN W16 [get_ports {NOTE_IDX[2]}] +set_property PACKAGE_PIN V16 [get_ports {NOTE_IDX[1]}] +set_property PACKAGE_PIN V17 [get_ports {NOTE_IDX[0]}] +set_property PACKAGE_PIN W15 [get_ports NOTE_PLAY] +set_property PACKAGE_PIN R2 [get_ports GLOBAL_MUTE] +set_property PACKAGE_PIN V15 [get_ports NOTE_WRONG] diff --git a/eindopdracht/eindopdracht.srcs/note-synth-top.vhd b/eindopdracht/eindopdracht.srcs/note-synth-top.vhd new file mode 100644 index 0000000..c44a55e --- /dev/null +++ b/eindopdracht/eindopdracht.srcs/note-synth-top.vhd @@ -0,0 +1,35 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_arith.all; +use ieee.std_logic_unsigned.all; + +entity note_synth_top is port ( + SYSCLK, SYSRESET : in std_logic; -- system clock (100 MHz) and reset + GLOBAL_MUTE : in std_logic; -- global mute switch + NOTE_IDX: in std_logic_vector(3 downto 0); -- note index + NOTE_WRONG: in std_logic; -- note wrong + NOTE_PLAY: in std_logic; -- output audio + PWM_OUT : out std_logic); -- audio PWM output +end note_synth_top; + +architecture Behavioral of note_synth_top is + component note_synth is port( + CLK: in std_logic; -- system clock + RESET: in std_logic; -- async reset + NOTE_IDX: in std_logic_vector(3 downto 0); -- note index + NOTE_WRONG: in std_logic; -- note wrong + NOTE_PLAY: in std_logic; -- output audio + PWM_OUT: out std_logic); -- audio signal level + end component; + signal PWM_OUT_TEMP : std_logic; -- audio output buffer (for muting) +begin + note: note_synth port map ( + CLK => SYSCLK, + RESET => SYSRESET, + NOTE_IDX => NOTE_IDX, + NOTE_WRONG => NOTE_WRONG, + NOTE_PLAY => NOTE_PLAY, + PWM_OUT => PWM_OUT_TEMP); + + PWM_OUT <= PWM_OUT_TEMP and GLOBAL_MUTE; +end Behavioral; diff --git a/eindopdracht/eindopdracht.xpr b/eindopdracht/eindopdracht.xpr index 927d1d1..868080d 100644 --- a/eindopdracht/eindopdracht.xpr +++ b/eindopdracht/eindopdracht.xpr @@ -91,8 +91,22 @@ + + + + + + + + + + + + + + @@ -139,56 +153,63 @@ + + - - - - - - + + + + + + + + + + + + @@ -196,7 +217,7 @@