FPGA Altera CycloneII EP2C5T44

From Eric

Revision as of 22:25, 29 December 2011 by Ejenn (Talk | contribs)
Jump to: navigation, search

Contents

L'installation

J'utilise l'environnement Quartus II Web Edition V11.1 service pack 1 et ModelSim-Altera Starter Edition.

Le transfert du bitmap vers le FPGA se fait en utilisant un clone chinois de l'USB Byte Blaster. Les drivers sont situés dans le répertoire <Path to Quartus II installation>\drivers\<cable type>.

La seule configuration consiste à indiquer quel outil de simulation on souhaite utiliser. Pour ce faire, utiliser le menu <tools>/<options> et renseigner la ligne intitulée "ModelSim-Altera" :

Set simulator.jpg

Un bref tutoriel

Le système cible

Le système consiste en un compteur 32 bits alimenté par une horloge à 100MHz obtenue par multiplication par 2 de l'horloge de la carte EP2C5. L'état des bits 24, 25 et 26 du compteur sera visualisé par les 3 leds de la carte à EP2C5.

La PLL est un macro-composant généré par le Macrowizard de Quartus II. Le compteur est un modèle VHDL.

La carte

La carte que nous utilisons comprend un FPGA Cylcone II EP2C5T144 d'Altera. En voici une photo :

Cette carte comprend le strict minimum, à savoir :

  • le FPGA lui-même,
  • les connecteurs JTAG (chargement de la RAM du FPGA) et Active Serial (chargement de la flash de configuration)
  • une flash de configuration de 4Mbits (EPCS4SI8)
  • un régulateur 1.2V (tension du coeur)
  • un régulateur 3.3V (I/O)
  • 3 leds rouges connectées aux broches 3, 7 et 9
  • une led rouge témoin d'alimentation
  • un interrupteur connecté à la masse et à la broche 144
  • un oscillateur 50MHz connecté à la broche 17.
Ep2c5t144 carte1.jpg
Ep2c5t144 carte2.jpg
Ep2c5t144 carte3.jpg


La création du projet

Lancement du "wizard" : File/New Project Wizard

  • Page 1 : on donne le nom du projet ("hello") et nom de l'entité de plus haut niveau ("top") :
Ep2c5t144 wizard1.jpg
  • Page 2 : on laisse la page vide. Les fichiers seront rajoutés plus tard.
  • Page 3 : sélection du composant. Il s'agit d'un CycloneII de 144 broches : l'EP2C5T144C8
Ep2c5t144 wizard3.jpg
Ce composant est alimenté en 1.2V, dispose de 4608 logical elements (LE), de 89 broches d'IO, de 119808 bits de RAM,de 26 multiplicateurs de 9 bits et de 2 PLL (nous en utiliserons une).
  • Page 4 : sélection des outils. On précise simplement que l'on utilisera le simulateur ModelSim-Altera.
    Ep2c5t144 wizard4.jpg
  • Page 5 : résumé de la configuration du projet.
    Ep2c5t144 wizard5.jpg

Une fois le projet créé, la page principale de QuartusII s'ouvre. Le navigateur de projet (vue "hierarchy") indique le nom du composant et le nom de l'entité de plus haut niveau (ici : "top"). Les vues "files" et "Design Units" sont pour l'instant vides.

Création du modèle VHDL

Création du compteur

Nous allons tout d'abord créer le compteur. Le code VHDL est le suivant :

library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity counter is
	port (count : buffer STD_LOGIC_VECTOR(31 downto 0) :="00000000000000000000000000000000";
			clk   : in STD_LOGIC;
			reset : in STD_LOGIC);
end;

architecture arch1 of counter is
	-- Les données de timing ne sont utilisées que pour la simulation.
	constant tpd_reset_to_count : time := 10 ns;
	constant tpd_clk_to_count   : time :=  5 ns;

	function increment(val : STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR
	is
		-- normalize the indexing
		alias input : STD_LOGIC_VECTOR(val'length downto 1) is val;
		variable result : STD_LOGIC_VECTOR(input'range) := input;
		variable carry : STD_LOGIC := '1';
	begin
		for i in input'low to input'high loop
			result(i) := input(i) xor carry;
			carry := input(i) and carry;
			exit when carry = '0';
		end loop;
		return result;
	end increment;
begin

	ctr:
	process(clk)
	begin
		if (clk = '1') then
			count <= increment(count) after tpd_clk_to_count;
		end if;
				--if (reset = '1') then
			--	count <= (others => '0') after tpd_reset_to_count;
		--end if;
	end process;

end arch1;
Personal tools