Transcript PFC 7

Introducció als sistemes
digitals reconfigurables amb la
targeta DE2 d’Altera
Autor: Roser Ortiz Ramos
Director: Francesc Josep Sànchez i Robert
Índex
 Introducció
 Programació i eines
 Aplicacions sobre la FPGA
 Rellotge Digital
 Aplicacions sobre NIOS II
Rellotge digital
 Comparativa
2
Introducció
Altera
+
FPGA
DE2
‘Development
and education
Board’
3
Programació i
eines (I)
Programació de la FPGA:
 Web Edition o Licence Edition?
 Última versió v9.0
 Llicència 1800 €
 Linux, només acceptat per
llicència
 IP Altera: OpenCore
4
Programació i
eines (II)
Llenguatges de programació:
 Verilog
 VHDL
Quin
escollim?
VHDL
Llibreries
Declaració
I/O
Programa
principal
5
Programació i
eines (III)
Creació del µcontrolador :
Hardware
 Programa visual
 Creació automàtica de fitxers:
 VHDL o Verilog
 Arxiu .ptf
6
Programació i
eines (VI)
Programació del µcontrolador:
Software
 Càrrega de l’arxiu .ptf
 Programació en C o Assemblador
 Compilació i càrrega a la placa del programa
principal
 Possibilitat de Debugg
7
Aplicacions sobre
la FPGA (I)
Aplicació senzilla:
Assignació entrada sortida
Creació d’un nou projecte
Simulació:
LEDR
sw0
sw1
sw2
 Funcional : Ideal
 Timming : Incorporem retards
Assignació de Pins:
sw17
GND
 Manual
 Arxiu: DE2_pinassignments.csv
8
Aplicacions sobre
la FPGA (II)
Simulació: Arxiu de formes d’ona
Funcional
Timming
9
Aplicacions sobre
la FPGA (III)
Assignació de PINS
 Manual: DE2 Reference Manual +
assigmant editor
 Arxiu:
DE2_pinassignments.csv
10
Aplicacions sobre
la FPGA (IV)
Càrrega del Programa a la
FPGA: USB_Blaster
11
Aplicacions sobre
la FPGA (V)
Projectes que podem realitzar:
 MUX
5-1:
PROCESS (S)
BEGIN
CASE S IS
WHEN
WHEN
WHEN
WHEN
WHEN
END CASE;
END PROCESS
"000"
"001"
"010"
"011"
OTHERS
=>
=>
=>
=>
=>
M<=U;
M<=V;
M<=W;
M<=X;
M<=Y;
12
Aplicacions sobre
la FPGA (VI)
 Descodificador 7 Segments: sentencies booleanes
(if, else)
Traducció bit a bit
13
Aplicacions sobre
la FPGA (V)
Dos projectes en un: PORT MAP
 Incorporar els .vhd al nou projecte
 Crear una nova entity
 Declarar senyals
 Fer assignació de ports per component
14
Rellotge Digital (I)
CLOCK_50
clk1
CE
SM
FSM
GO
GOM
GOH
CE
Rellotge_digital
SM
SH
U_S
D_S
D_H
SH
U_M
CE
SM
SH
CLOCK
CLOCK
D_M
clk2
U_H
Divfreq
Descodificador
7 segments
(del H0 al H5)
HEX0
HEX2
HEX4
HEX1
HEX3
HEX5
 Entrades:
 Clock_50 (f = 50MHz)
 CE: Posa en marxa el rellotge
 Sortides:
HEX0 al HEX5: 6
Displays 7-Segments
 SM: Puja minuts
 SH: Puja hores
15
Rellotge Digital
(II)
 Comptador: del ‘0’ al ‘9’
PRESENT_STATE
4
U
TC2
Comp. 3 bits
SW0
TC
U
Reset
CL
CLK
PRESENT_STATE
TC1
TC
FUTURE_STATE
FUTURE_STATE
 FSM:
Finite State Machine
RESET
STATE_REGISTER
CE
CLK
PRESENT_STATE
16
Rellotge digital
(III)
 Comptador d’hores, minuts i segons
TC_D
RESET
CLOCK
TC_S
TC_D
TC_D
D
D
CE
TC_H
D
CE
U
CE
TC_M
CE
U
CE_H
CE_M
U
D_S
D_M
D_H
U_S
U_M
U_H
 Divisor de freqüència: de 50MHz a 1 Hz
divisor_freq2
divisor_freq
clk
clkout1
clkout2
17
Rellotge Digital
(IV)
 Descodificador 7 Segments: ‘1’= segment off,‘0’= segment on
18
Rellotge Digital
(V)
 Posem hora
SH
SM
TC_D
RESET
CLOCK
TC_S
TC_D
CE
TC_D
D
D
CE
TC_M
CE
U
CE_M
GO_M
TC_H
D
CE
U
U
CE_H
GO_H
D_S
D_M
D_H
U_S
U_M
U_H
CE=SH=SM=’0'
CE=SH=SM=’0'
CE=’0',
SH=’1',SM= X
SH=’1';
CE=SM=0
 FSM, si CE està on no
podem canviar l’hora
CE=’1',
SH=X, SM=X
Espera
(000)
CE=SH=SM=’0'
CE=’0',
SH=’1',SM= X
Puja_hora
(010)
Rellotge
(100)
CE=’1'
CE=’1'
CE=’0',
SH=’0',SM= ‘1’
CE=’0',
SH=’1',SM= X
CE=’1',
SH=X, SM=X
Puja_min
(001)
CE=’0'
SH=’0', SM=’1'
CE=’0'
SH=’0', SM=’1'
19
Aplicacions
sobre NIOS II (I)
LEDG
sw0
sw1
 Creació del Hardware: SOPC
Builder
 Creació d’arxius .vhd i .ptf
sw2
sw7
GND
20
Aplicacions sobre
NIOS II (II)
Programació en C:
 Interrupcions:
 Bits d’activació:
generals i particulars
de cada dispositiu
 Dispositius que les
generen: 32 possibles
interrupcions
 void interrupt_handler (void);
21
Aplicacions sobre
NIOS II (III)
 Interrupcions del Timer
 Timer programable
 void
timer_isr(void)
 Interrupcions dels botons
 void
pushbutton_isr(void)
22
Aplicacions sobre
NIOS II (IV)
 Programa principal: void main ();
int main(void)
{
volatile int * switches = (int *) SWITCHES_BASE_ADDRESS;
volatile int * pushbuttons= (int *)
PUSHBUTTONS_BASE_ADDRESS;
int * red_leds = (int *) LEDR_BASE_ADDRESS;
*(pushbuttons+2)=0x8; //Enable KEY3 to enable interrupts
__builtin_wrctl(3, 2);//Write 2 into ienable register
__builtin_wrctl(0, 1);//Write 1 into status register
while(1);
return 0;
}
23
Aplicacions sobre
NIOS II (V)
 Càrrega de l’arxiu .c a la placa:
Altera Monitor program
24
Rellotge Digital
(I)
Hardware: Basic
Computer d’Altera
 Timer: 125 ms
 Adreces de
memòria
 Interrupcions
25
Rellotge Digital
(II)
Software: Funcions del nostre Rellotge:
Estat del
SW0
Activació
interrupcions
Salta
interrupció
Crida a la
funció que
toca
 Interrupcions
 Timer
 Botons
 Rellotge: Comptatge de segons amb el Timer
 Visualització: Descodificador 7-segments
 Posem en hora: Activació de interrupcions al void main() 26
Rellotge Digital
(III)
 Funcions relacionades amb les interrupcions:
 void interrupt_handler(void): Verifica qui
ha generat la interrupció i crida a la funció que
correspongui executar.
 void timer_isr(void): Crida a la funció
suma_segons en el cas que ho necessiti.
 void pushbutton_isr(void): Decideix quin
botó ha provocat la interrupció.
27
Rellotge Digital
(IV)
 Funcions relacionades amb el funcionament del rellotge
 void suma_segons(void): ens genera els valors
d’hores, minuts i segons.
 char torna_unitats(int valor): Torna el valor
d’unitat del int passat per després descodificar-ho.
 char torna_decenes(int valor): Torna el valor
de la desena del int passat.
 char descodifica_bcd_7segments (int
index): Torna el valor en 7 segments del int passat.
 void dona_7segments(void): Codifica a 7
Segments tot el rellotge.
28
Rellotge Digital
(V)
 Possem hora:
 void suma_hora(void): Augmenta el valor de les
hores quan es genera la interrupció adequada.
 void suma_minut(void): Augmenta el valor dels
minuts.
 Programa principal:
 Verifica si el SW0 està on.
 Si està on activa el Timer i les seves
interrupcions.
 Si no, les desactiva i activa les dels botons.
29
Rellotge Digital
(VI)
Càrrega a la DE2
 isr_linkage.c
 Fitxer amb el programa principal
30
Comparativa
VHDL
NIOS II, C
 Podem escollir: Verilog o
VHDL
 Només necessitem un
programa funcionant
Tenim que saber I/O per
dispositiu
 Creem i programem els
dispositius: fitxers .vhd
 Podem escollir: C o
Assemblador
 Necessitem dos
programes instal·lats
 Tenim que saber els
dispositius a utilitzar
 Només programem els
dispositius: funcions en C
 Divisor de freqüències
 Descodificador:
sentencies booleanes
encadenades
 El Timer ens dona la
freqüència que volem
 Descodificador: vector de
caràcters
31
Preguntes?
32