* sim/makefile with targets to simulate the cpld design * sim/cpldtestt.vhd file with the testbench * sim/cpldtestt.tcl file with control commands for gtkwave * src/cpldteste.vhd file with test design (@ the moment a simple 10101 @ gpio port) * syn/constraints/cpldtest.ucf with implementation constraints * syn/makefile with targets to build the cpld designmaster
| @ -0,0 +1,4 @@ | |||||
| set signals [list] | |||||
| lappend signals "top.cpldtestt.s_cpld_clk" | |||||
| lappend signals "top.cpldtestt.s_cpld_gpio" | |||||
| set num_added [ gtkwave::addSignalsFromList $signals ] | |||||
| @ -0,0 +1,62 @@ | |||||
| library ieee; | |||||
| use ieee.std_logic_1164.all; | |||||
| use ieee.numeric_std.all; | |||||
| entity CpldTestT is | |||||
| end entity CpldTestT; | |||||
| architecture rtl of CpldTestT is | |||||
| component CpldTestE is | |||||
| port ( | |||||
| -- globals | |||||
| XcClk_i : in std_logic; | |||||
| -- avr | |||||
| AvrData_io : inout std_logic_vector(13 downto 0); | |||||
| AvrSck_i : in std_logic; | |||||
| AvrMosi_i : in std_logic; | |||||
| AvrMiso_o : out std_logic; | |||||
| -- spi flash | |||||
| SpfRst_n_o : out std_logic; | |||||
| SpfCs_n_o : out std_logic; | |||||
| SpfSck_o : out std_logic; | |||||
| SpfMosi_o : out std_logic; | |||||
| SpfMiso_i : in std_logic; | |||||
| -- gpio | |||||
| Gpio_io : inout std_logic_vector(4 downto 0) | |||||
| ); | |||||
| end component CpldTestE; | |||||
| signal s_cpld_clk : std_logic := '0'; | |||||
| signal s_cpld_gpio : std_logic_vector(4 downto 0); | |||||
| begin | |||||
| s_cpld_clk <= not(s_cpld_clk) after 20 ns; | |||||
| i_CpldTestE : CpldTestE | |||||
| port map | |||||
| ( | |||||
| -- globals | |||||
| XcClk_i => s_cpld_clk, | |||||
| -- avr | |||||
| AvrData_io => open, | |||||
| AvrSck_i => '0', | |||||
| AvrMosi_i => '0', | |||||
| AvrMiso_o => open, | |||||
| -- spi flash | |||||
| SpfRst_n_o => open, | |||||
| SpfCs_n_o => open, | |||||
| SpfSck_o => open, | |||||
| SpfMosi_o => open, | |||||
| SpfMiso_i => '0', | |||||
| -- gpio | |||||
| Gpio_io => s_cpld_gpio | |||||
| ); | |||||
| end architecture rtl; | |||||
| @ -0,0 +1,24 @@ | |||||
| PROJECT = cpldtestt | |||||
| MAKE_WORKDIR := $(shell mkdir -p work) | |||||
| WORKDIR = ${CURDIR}/work | |||||
| all : sim wave | |||||
| .PHONY: | |||||
| sim : $(PROJECT).ghw | |||||
| $(PROJECT).ghw : ../src/*.vhd $(PROJECT).vhd | |||||
| cd $(WORKDIR); ghdl -a ../../src/*.vhd ../$(PROJECT).vhd | |||||
| cd $(WORKDIR); ghdl -e $(PROJECT) | |||||
| cd $(WORKDIR); ghdl -r $(PROJECT) --wave=../$(PROJECT).ghw --assert-level=error --stop-time=150us | |||||
| wave : $(PROJECT).ghw $(PROJECT).tcl | |||||
| gtkwave -T $(PROJECT).tcl $(PROJECT).ghw | |||||
| clean : | |||||
| echo "# cleaning simulation files" | |||||
| rm -f $(PROJECT).ghw | |||||
| rm -rf $(WORKDIR) | |||||
| @ -0,0 +1,37 @@ | |||||
| library ieee; | |||||
| use ieee.std_logic_1164.all; | |||||
| use ieee.numeric_std.all; | |||||
| entity CpldTestE is | |||||
| port ( | |||||
| -- globals | |||||
| XcClk_i : in std_logic; | |||||
| -- avr | |||||
| AvrData_io : inout std_logic_vector(13 downto 0); | |||||
| AvrSck_i : in std_logic; | |||||
| AvrMosi_i : in std_logic; | |||||
| AvrMiso_o : out std_logic; | |||||
| -- spi flash | |||||
| SpfRst_n_o : out std_logic; | |||||
| SpfCs_n_o : out std_logic; | |||||
| SpfSck_o : out std_logic; | |||||
| SpfMosi_o : out std_logic; | |||||
| SpfMiso_i : in std_logic; | |||||
| -- gpio | |||||
| Gpio_io : inout std_logic_vector(4 downto 0) | |||||
| ); | |||||
| end entity CpldTestE; | |||||
| architecture rtl of CpldTestE is | |||||
| begin | |||||
| -- test gpio pins | |||||
| Gpio_io <= "10101"; | |||||
| end architecture rtl; | |||||
| @ -0,0 +1,34 @@ | |||||
| # pin locations | |||||
| XcClk_i LOC = PIN43; | |||||
| AvrData_io<0> LOC = PIN6; | |||||
| AvrData_io<1> LOC = PIN5; | |||||
| AvrData_io<2> LOC = PIN3; | |||||
| AvrData_io<3> LOC = PIN34; | |||||
| AvrData_io<4> LOC = PIN33; | |||||
| AvrData_io<5> LOC = PIN32; | |||||
| AvrData_io<6> LOC = PIN31; | |||||
| AvrData_io<7> LOC = PIN30; | |||||
| AvrData_io<8> LOC = PIN29; | |||||
| AvrData_io<9> LOC = PIN28; | |||||
| AvrData_io<10> LOC = PIN27; | |||||
| AvrData_io<11> LOC = PIN23; | |||||
| AvrData_io<12> LOC = PIN12; | |||||
| AvrData_io<13> LOC = PIN8; | |||||
| AvrData_io<14> LOC = PIN7; | |||||
| AvrSck_i LOC = PIN44; | |||||
| AvrMosi_i LOC = PIN2; | |||||
| AvrMiso_o LOC = PIN1; | |||||
| SpfRst_n_o LOC = PIN21; | |||||
| SpfCs_n_o LOC = PIN22; | |||||
| SpfSck_o LOC = PIN20; | |||||
| SpfMosi_o LOC = PIN13; | |||||
| SpfMiso_i LOC = PIN14; | |||||
| Gpio_io<0> LOC = PIN42; | |||||
| Gpio_io<1> LOC = PIN41; | |||||
| Gpio_io<2> LOC = PIN40; | |||||
| Gpio_io<3> LOC = PIN39; | |||||
| Gpio_io<4> LOC = PIN38; | |||||
| # clock timing | |||||
| NET "XcClk_i" TNM_NET = XcClk_i; | |||||
| TIMESPEC TS_Clk_i = PERIOD "XcClk_i" 40 ns HIGH 50%; | |||||