* 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%; |