« Very High Speed Integrated Circuit Hardware Description Language/Micro contrôleur embarqué : le PicoBlaze » : différence entre les versions

Contenu supprimé Contenu ajouté
Jona (discussion | contributions)
m Robot : Remplacement de texte automatisé (-(<|</)source([ \t>]) +\1syntaxhighlight\2)
Ligne 352 :
 
En écriture en [[w:C_(langage)|langage C]] cette structure de contrôle [[w:Structure_de_contrôle#Test_si_sinon|test si sinon]] s'écrit :
<sourcesyntaxhighlight lang="C">
if (s0==s1) {
// partie alors
Ligne 359 :
// partie autrement
}
</syntaxhighlight>
</source>
En [[w:Assembleur|assembleur]] PicoBlaze cela s'écrit :
<pre>
Ligne 436 :
==== La programmation de suivant le cas ====
La programmation du [[w:Structure_de_contrôle#Test_selon|test selon]] s'écrit en C :
<sourcesyntaxhighlight lang="C">
switch (variable) { /* variable est de type int ou char */
case valeur_1 : action_1; break;
Ligne 444 :
default : action_0;
}
</syntaxhighlight>
</source>
 
{{remarque
Ligne 700 :
 
On donne un exemple de programme [[w:VHDL|VHDL]] correspondant aux deux composants ajoutés, le multiplexeur et la logique de décodage ainsi qu'une partie du registre.
<sourcesyntaxhighlight lang="VHDL">
-- multiplexeur
with port_id(1 downto 0) select
Ligne 732 :
end if;
end process;
</syntaxhighlight>
</source>
 
==== Interfacer un PORT de sortie ====
Ligne 745 :
 
Pour quatre ports seuls les deux bits de [[w:Bit_de_poids_faible|poids faible]] de PORT_ID[7:0] peuvent être utilisés. On donne pour une meilleure compréhension les programmes VHDL correspondants :
<sourcesyntaxhighlight lang="VHDL">
-- circuit décodage
process(write_strobe,port_id) begin
Ligne 759 :
end if;
end process;
</syntaxhighlight>
</source>
Remarquons qu’il est possible de simplifier largement le décodage si on utilise comme numéros de PORT : 1, 2, 4 et 8 (au lieu de 1, 2, 3 et 4) et du coup les {{Unité|4|bits}} de poids faible de PORT_ID[7:0] :
<sourcesyntaxhighlight lang="VHDL">
-- circuit décodage simplifié
process(write_strobe,port_id) begin
Ligne 770 :
end if;
end process;
</syntaxhighlight>
</source>
Un autre problème va nous intéresser maintenant : les [[w:Interruption_(informatique)|interruptions]].
 
Ligne 804 :
Voici un morceau de code VHDL donné par Ken Chapman dans le forum picoBlaze pour gérer les interruptions :
<sourcesyntaxhighlight lang="VHDL">
interrupt_control: process(clk)
begin
Ligne 828 :
end if;
end process interrupt_control;
</syntaxhighlight>
</source>
Ce code ne fonctionne correctement que si le signal "extint" est synchrone.
 
Ligne 843 :
=== Exercice 1 ===
Soit le programme suivant :
<sourcesyntaxhighlight lang="vhdl">
library ieee;
use ieee.std_logic_1164.all;
Ligne 923 :
end behavior;
</syntaxhighlight>
</source>
Réaliser le schéma correspondant à cette architecture.
=== Exercice 2 ===