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