Pobierz prezentację z tego wydarzenia.

Transkrypt

Pobierz prezentację z tego wydarzenia.
#1 - BarCamp Semihalf.
System wbudowany?
Zrób to sam!
Architektura mikrokontrolera pisana
“słowem”
Zyta Racia
Inżynier oprogramowania
[email protected]
O czym usłyszymy
Poznajemy język opisu sprzętu
l Budujemy z modułów i sygnałów
l Słowo o architekturze
l Definiujemy słownik/język miktrokontrolera
l Rozmawiamy z pamięcią
l Poszerzamy horyzonty mikrokontrolera
l Reasumujemy
l 
Poznajemy język opisu sprzętu
l 
Budujemy z modułów i sygnałów
l Słowo o architekturze
l Definiujemy słownik/język miktrokontrolera
l Rozmawiamy z pamięcią
l Poszerzamy horyzonty mikrokontrolera
l Reasumujemy
l 
Czym różni się Verilog od C
Czym różni się Verilog od C
Nomenklatura
PODAJ_WAR ZACHOWAJ_WAR
MODUŁ
• Wejścia
• Wyjścia
• Zmienne lokalne
• Logika
zawartosc_rej =
WE_ZAW_REJ;
WY_NR_REJ
WE_ZAW_REJ
WISHBONE
Poznajemy język opisu sprzętu
l 
Budujemy z modułów i sygnałów
l 
Słowo o architekturze
l Definiujemy słownik/język miktrokontrolera
l Rozmawiamy z pamięcią
l Poszerzamy horyzonty mikrokontrolera
l Reasumujemy
l 
Moduł, sygnał, stan, przebieg
ENABLE
CLK
RESET
Q [3:0]
LICZNIK
Poznajemy język opisu sprzętu
l Budujemy z modułów i sygnałów
l 
Słowo o architekturze
l 
Definiujemy słownik/język miktrokontrolera
l Rozmawiamy z pamięcią
l Poszerzamy horyzonty mikrokontrolera
l Reasumujemy
l 
Rdzeń mikrokontrolera
Poznajemy język opisu sprzętu
l Budujemy z modułów i sygnałów
l Słowo o architekturze
l 
Definiujemy słownik/język mikrokontrolera
l 
Rozmawiamy z pamięcią
l Poszerzamy horyzonty mikrokontrolera
l Reasumujemy
l 
Dekoder instrukcji
Krok 1
§ ADDR7,R8
§ STS0xa,R7
#dodajdosiebiezawartościrejestrówonumerach7i8;
#zapiszwynikwpamięci
Krok 2
15 14 13 12 11 10 9
8
7
6
5
4
3
2
1
0
op op op op op op s
d
d
d
d
d
s
s
s
s
Krok 3
ADD:
STS:
0000 11sd dddd ssss
1001 001s ssss 0000
aaaa aaaa aaaa aaaa
Jak to się pisze
§ ADDR7,R8
§ STS0xa,R7
0000 1110 0111 1000 1001 0010 0111 0000 0000 0000 0000 101
casex (INSTR)
16'b000011xxxxxxxxxx: begin
/* ADD Rd, Rs */
NR_REJ_A = nr_a
NR_REJ_B = nr_b;
WPISZ_DO_REJ = 1'b1
OPERACJA = ALU_ADD;
end
endcase
Przekład na moduły
Moduł na język opisu sprzętu
module DekoderInstrukcji (
input [15:0] INSTR,
output reg [4:0] NR_REJ_A
output reg [4:0] NR_REJ_B
output reg WPISZ_DO_REJ
output reg [5:0] OPERACJA
);
parameter ALU_OP = 6'h03
wire [4:0] nr_a;
wire [4:0] nr_b;
assign nr_a = { INSTR[9], INSTR[3:0]
assign nr_b = INSTR[8:4];
always @* begin
NR_REJ_A = 5'hXX;
NR_REJ_B = 5'hXX;
OPERACJA = 6h000000;
WPISZ_DO_REJ = 1'b0;
casex (INSTR)
[…]
Poznajemy język opisu sprzętu
l Budujemy z modułów i sygnałów
l Słowo o architekturze
l Definiujemy słownik/język mikrokontrolera
l 
Rozmawiamy z pamięcią
l 
Poszerzamy horyzonty mikrokontrolera
l Reasumujemy
l 
Pamięć programu
Implementacja
always @(posedge CLK or posedge RESET)
begin
if (RESET) begin
licznik <= 16'hffff;
end else begin
if (ACK_I) begin
licznik <= ADR_O;
end else
;
end
end
always @(licznik) begin
ADR_O = licznik + 1'b1;
end
endmodule
Pamięć danych (RAM)
Poznajemy język opisu sprzętu
l Budujemy z modułów i sygnałów
l Słowo o architekturze
l Definiujemy słownik/język mikrokontrolera
l Rozmawiamy z pamięcią
l 
Poszerzamy horyzonty mikrokontrolera
l 
Reasumujemy
l 
Zapis do pamięci danych
Poznajemy język opisu sprzętu
l Budujemy z modułów i sygnałów
l Słowo o architekturze
l Definiujemy słownik/język mikrokontrolera
l Poszerzamy horyzonty mikrokontrolera
l Rozmawiamy z pamięcią
l 
Reasumujemy
l 
Podsumowanie
§ ~3800 linijek
§ 19 modułów
§ ~120 instrukcji
Efekty specjalne
Więcej?
Bibliografia:
[1] Jarosław Doliński, Mikrokontrolery
AVR w praktyce, wyd. BTC, Warszawa,
2003.
[2] specyfikacja Wishbone http://
cdn.opencores.org/downloads/
wbspec_b4.pdf
Architektura mikrokontrolera pisana
“słowem”
Zyta Racia
Inżynier oprogramowania
[email protected]