Zdroj: http://prochazka.clanweb.eu/index.php?a=xilinx/demo_xc9536  •  Vydáno: 12.1.2008 17:45  •  Autor: hacesoft

Demo s IO XILINX XC9536

Jednoduchý příklad použití hradového pole xilinx cpld xc9536. Výpis programu je v jazyce VHDL, tak i v ABELu, ale na tomto serveru se převážně setkáte pouze s VHDL jazykem.

Jednoduché blikátko s hradlovým polem XILINX XC9536 v pouzdře PC44.
Vnitrní obsah hradlového pole je jednou napsán v jazyku ABEL a podruhé ve VHDL. Záleží na Vás, čemu dáte přednost. Schéma zapojení je úplně jednoduché. Kromě pár základních součástek jako LED diody a odpory, ještě obsahuje časovač 555, který vyrábí impulsy pro XC9536. Až celé blikátko postavíte ještě je potřeba do hradlového pole nahrát obsah, zdrojový kód je v ABELu nebo VHDL, který se nejprve přeloží například v programu WebPack. Přímo z tohoto programu můžeme blikátko naprogramovat. Pomoci PINu TDI, TDO, TCK a TMS (tak zvané rozhraní JTAG) naprogramujeme obsah obvodu XC9536. Tyto čtyři vývody se nepoužívají k ničemu jinému než programováni obsahu součástku. Nelze je použít v aplikaci pro jiné účely než k samotnému programování hradlového pole.
Na naprogramování obvodu XILINX použijte Downloader.

   Stáhnout zdrojový kód pro vývojové prostředí WebPack, blikac_vhdl.zip.
   Stáhnout zdrojový kód pro vývojové prostředí WebPack, blikac_abel.zip.

   Archív obsahuje už zkompilovaný výslední kód ve formátu jedec.
     Archív obsahuje soubory:
       blikac.jed – kompilovaný kód, který se nahraje do hradlového pole
       blikac.npl – informace o projektu. Stačí na tento soubor dvakrát kliknout a načte se cely projekt
       blikac.ucf – zde se nachází připojeni jednotlivých nazvu signálu na fyzické PINy součástky
       blikac.vhd pro verzi ve VHDL jazyku
       blikac.abl pro verzi v ABELu

Pokud použijete jinou součástku než XC9536 v pouzdře PC44 je potřeba znovu přiřadit PINy nové součástce a přeložit zdrojový kód.
Text code - Výpis programu v jazyku ABEL
module jcounter
Title 'blikatko'
 
Declarations
clk PIN 5; // GCK1 on XC9536 CPLD
!q0 pin 38 istype 'reg'; // LED
!q1 pin 37 istype 'reg'; // LED
!q2 pin 36 istype 'reg'; // LED
!q3 pin 35 istype 'reg'; // LED
!q4 pin 34 istype 'reg'; // LED
!q5 pin 33 istype 'reg'; // LED
!q6 pin 29 istype 'reg'; // LED
!q7 pin 28 istype 'reg'; // LED
q = [q7..q0]; // LED Bus Declaration
 
 
Equations
//Johnson Shift Counter description
q.clk = clk;
q0 := !q7; q1 := q0; q2 := q1; q3 := q2;
q4 := q3; q5 := q4; q6 := q5; q7 := q6;
end jcounter
VHDL code
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
 
-- Uncomment the following lines to use the declarations that are
-- provided for instantiating Xilinx primitive components.
--library UNISIM;
--use UNISIM.VComponents.all;
 
entity blikac is
port (
   clk:in STD_LOGIC;
   Dout:buffer STD_LOGIC_VECTOR (7 downto 0)
   );
end blikac;
 
architecture Behavioral of blikac is
 
begin
process (CLK)
begin
  if CLK'event and CLK='1' then--CLK rising edge
    Dout(7 downto 1) <= Dout(6 downto 0);--posuvny registr
    Dout(0) <= not Dout(7);--Last bit inverted back into first bit
  end if;
end process;
 
end Behavioral;

Schéma zapojení

sch5v

Obrázek v plném rozlišení.