Upload
banaru-alexandru
View
287
Download
2
Embed Size (px)
Citation preview
8/7/2019 Proiectarea unui procesor n limbajul Verilog
1/12
Ministerul Educaiei si Tineretului al R. MoldovaUniversitatea Tehnica a Moldovei
Catedra Materiale i Dispozitive Semiconductoare
PROIECT de curs
Sisteme Electronice Programabile
TEMA: Proiectarea unui procesor n
limbajul Verilog
A efectuat: st. Gr. ME-071Banaru Alexandru
A verificat: Lector superiorBragarenco Andrei
8/7/2019 Proiectarea unui procesor n limbajul Verilog
2/12
*Chiinu 2010*
Cuprins:
Introducere..............................................................................3
2 . Date teoretice.....................................................................32.1. Procesorul Elementar......................................................3
2.2. Modulul CROM..............................................................4
2.3.Modulul RALU.................................................................53. Proiectare i implementare................................................6
3.1. Parametrii..................................................................6
3.2. RALU..........................................................................7
3.3. CROM........................................................................8
3.4. Procesorul..................................................................10
3.5. Modulul de testare....................................................10
3.6. Prorgamul de test a procesorului............................11
4. Rezultatele experimentale.................................................12
Concluzii.................................................................................12
2
8/7/2019 Proiectarea unui procesor n limbajul Verilog
3/12
Introduceren prezent dezvoltarea tehnico-tiinific se bazeaz pe progresele
electronicii digitale de calcul i procesare a datelor i mai mult dect att, e
necesar din ce n ce mai mult performan n acest . Elaborarea unui nouprocesor fr unelte performante ar fi foarte anevoioas, din acest motiv, n anul1985, a fost elaborat limbajul descriptiv Verilog, ce permite descriereacomportamentului i/sau arhitecturii unui sistem numeric.
n acest program urmeaz s proiectm un procesor i s-l simulm.
2 . Date teoretice
2.1. Procesorul ElementarDefiniii de baz :
Un procesor este un SO-3 la care unul din automate este de tip RALU iarcellalt ndeplinete funcia de automat de control.Un procesor elementar, PE, este un procesor al crui automat de control este
strict iniialVom numi microinstruciuni elementele produsului Y x Q ale unui automat
de controlUn procesor elementar va fi format, conform definiiilor anterioare, dintr-un
circuit de tip RALU i un automat de control strict iniial CROM. Acest procesor se vainiializa prin resetare i va executa o singur funcie, cea definit de secvena decomand pentru care a fost proiectat automatul de control. Altfel spus, PE este
procesorul cu o singur instruciune pe care o interpreteazcontinuu.
Figura 1 .Procesor ElementarFie PE din figura 1, format din CR0M, n calitate de automat de control, definit deurmtorul format al microinstruciunii pe care o genereaz:::= ::= READ | WRITE | -::= JMP | CJMP | -::= CR | WAITJR. | WAIT.W | -
::= i RALU1 definit prin urmtoarea structur a comenzii:
3
8/7/2019 Proiectarea unui procesor n limbajul Verilog
4/12
::=
8/7/2019 Proiectarea unui procesor n limbajul Verilog
5/12
INC : starea urmtoare a CROM se obine prin incrementare
Figura 4. Structura CROM-uluiJMP : starea urmtoare a CROM este dat de cmpul JUMP prin selectarea intrrii 1
a MUX de ctre ieire TC
Figura 5. Tabelul de adevr al circuitului transcodor .CJMP : starea urmtoare depinde de valoarea intrrii selectate, prin codul TEST
sub denumirea de T, la intrarea TC:
dac testul nu este ndeplinit, T = 0, atunci tranziia are loc prin incre-mentare pentru c ieirile TC iau valoarea 00 dac testul este ndeplinit, T = 1, atunci tranziia are loc prin saltui la adresadat de cmpul JUMP, selectat prin valoarea 01 de la ieirea TC
INIT : starea urmtoare este dat de codul de iniializare prezent pe intrarea X1,conec-tat la intrrile 2 i 3 ale MUX.
2.3.Modulul RALUUna din aplicaiile cele mai spectaculoase ale conceptului de AS3este legat
de realizarea unui automat funcional utilizat ca o component central a structuriiuzuale de procesor. Arhitectura oricrui procesor este centrat pe o serie de funciiIogico-aritmetice, aplicabile unui set de registre ce formeaz starea intern a
procesorului n cauz. Pentru a realiza o astfel de arhitectur este necesar o unitatede tip ALU prin care s poat fi prelucrat coninutul registrelor. Este vorba deunitatea RALU (Registers with Arithmetic and Logic Unii).
5
8/7/2019 Proiectarea unui procesor n limbajul Verilog
6/12
Figura 6.O variant simpl de RALURAM : reprezint memoria de registre cu trei porturi:e portul de citire adresat prin cmpul Left, ce furnizeaz operandul stng, LO, alALUportul de citire adresat prin cmpul Right, ce furnizeaz operandul drept,RO, al ALU (i AOUT, adresa de ieire pentru memoria extern)portul de scriere adresat prin cmpul Det, activat de valoarea W a cmpuluiWriteMUX : reprezint n MUXE folosite pentru selectarea operandului L la intrareaALU; permite accesul unor valori din exterior, recepionate pe intrarea DINALU : este unitatea logico-aritmetic comandat de cmpui Func; genereaz pelng rezultatul operaiei, ce se stocheaz temporar n LM, i o serie de indicatori cecar-acterizeaz rezultatul operaiei curente (Ind= {CR, OVFL, SGN, ODD, ZERO})ML : este latch-ul master, transparent pe primul palier al ceasului, cel ce urmeaz
fron-tului activ.Pe primul palier al ceasului RALU recepioneaz toate cmpurile care-i deter-minfuncionarea, fapt ce-i permite s ofere la intrarea ALU doi operanzi. Rezultatul dela ieirea ALU se nscrie n LM.Pe cel de al doilea palier al impulsului de ceas, ML se nchide memornd rezul-tatuloperaiei din ciclul de ceas curent, iar dac Write ia valoarea Wconinutul latch-uluiLM se va nscrie n memoria de registre la locaia selectat prin Det.Comanda primit de o astfel de unitate de prelucrare poate fi descris prin linii decomanddefinite n funcie de structura intern a memoriei i de operaiile executabile
n ALU. Vom da o definiie a liniei de comand n cazul particular pe care-l vomfolosi n exemplele ce urmeaz
3. Proiectare i implementare
3.1. ParametriiPentru a face proiectul mai clar i mai simplu de neles, am decis s-l proeictez
pe module aparte, astfel voi avea un modul RALU i un modul CROM, pe care levoi uni ntr-un singur modul PROCESOR. Pentru o flexibilitate mai mare, amparametrizat majoritatea valorilor utilizate, astfel la efectuarea modificrilor
ulterioare, ansele de a efectua o greeal e mult mai mic. Toi parametrii se coninntr-un fiier aparte, i se includ n modulele RALU i CROM prin comanda`include "parameter.vh"
Coninutul fiierului este://biti rezervati pentru adresele
registrilor
parameter ralu_reg_adr = 4;//numarul de stari posibile ale RALU
parameter state_nr = 5;
//operatiile pe care le poate efectua
RALU-ulparameter nop = 4'd0;parameter add = 4'd1;
parameter sub = 4'd2;parameter inc = 4'd3;parameter dec = 4'd4;parameter shl = 4'd5;parameter shr = 4'd6;parameter rol = 4'd7;parameter ror = 4'd8;
parameter AND = 4'd9;parameter OR = 4'd10;parameter XOR = 4'd11;
6
8/7/2019 Proiectarea unui procesor n limbajul Verilog
7/12
parameter NOT = 4'd12;parameter com = 4'd13;parameter LEFT = 4'd14;parameter RIGHT = 4'd15;
//modul de incrementare a PC
parameter mode_inc = 2'b00;
parameter mode_jmp = 2'b01;parameter mode_cjmp = 2'b10;parameter mode_init = 2'b1x;
//Definirea registrilor de uz general
parameter R0 = 4'd0;parameter R1 = 4'd1;parameter R2 = 4'd2;parameter R3 = 4'd3;parameter R4 = 4'd4;parameter R5 = 4'd5;
parameter R6 = 4'd6;parameter R7 = 4'd7;parameter R8 = 4'd8;parameter R9 = 4'd9;parameter R10 = 4'd10;parameter R11 = 4'd11;parameter R12 = 4'd12;
parameter R13 = 4'd13;parameter R14 = 4'd14;parameter R15 = 4'd15;
//Definirea elementelor
microinstructiunii
parameter select = 1'd1;
parameter no_sel = 1'd0;
parameter wr = 1'd1;parameter no_wr = 1'd0;
//Definiea bitilor de control
parameter no_test = 3'dx;parameter carry = 3'd0;parameter zero = 3'd1;parameter equal = 3'd2;parameter sign = 3'd3;
parameter pare = 3'd4;//Etichete
parameter no_label = 8'bx;parameter label_0 = 8'b0;parameter label_1 = 8'd5;parameter label_2 = 8'd2;
3.2. RALUPentru descrierea RALU am utilizat toate metode de descrirere studiate la acest curs, i, pe
care le ofer Verilog, i anume: Discriptiv Flux de date Comportamental.
module RALU (LA, RA, DA, Func, sel, w, Din, Dout,state, ck, rst);
`include "parameter.vh"//############### Dfinirea intrarilor si iesirilor ###############input [ralu_reg_adr-1:0] LA, RA, DA;input [3:0] Func;input [7:0] Din;input sel, w, ck, rst;
output [7:0] Dout ;output [7:0] state;//############### Definirea registrilor ###############reg [7:0] RAM[7:0];reg C;wire [7:0]Ro = (sel)?Din:RAM[RA];wire [7:0]Lo = RAM[LA];reg [7:0] Dout;initial Dout = 0;//############### Initailizarea registrilor ###############initial
beginRAM[0] = 8'd0;RAM[1] = 8'd0;
7
8/7/2019 Proiectarea unui procesor n limbajul Verilog
8/12
RAM[2] = 8'd0;RAM[3] = 8'd0;RAM[4] = 8'd0;RAM[5] = 8'd0;RAM[6] = 8'd0;RAM[7] = 8'd0;
end//############### Definirea starilor ALU ###############assign state[pare] = Dout[0];assign state[sign] = Dout[7];assign state[equal] = (Lo==Ro);assign state[zero] = (Dout==0);assign state[carry] = C;//############### Definirea isntructiunii de scriere in registri###############always @(posedge ck)if (w) RAM[DA] = Dout;//###############Definirea operatiilor ALU###############
always @(Lo or Ro or Din or Func)beginC=1'b0;
case (Func)sub: {C,Dout} = Lo-Ro;inc: {C,Dout} = Lo+1;dec: {C,Dout} = Lo-1;shl: {C,Dout} = {Lo,1'b0};shr: {Dout,C} = {1'b0,Lo};rol: Dout = {Lo[size-2:0],Lo[7]};ror: Dout = {Lo[0],Lo[7:1]};AND: Dout = Lo & Ro;OR: Dout = Lo | Ro;XOR: Dout = Lo ^ Ro;NOT: Dout = ~Lo;com: Dout = 1'd0-Lo;LEFT: Dout = Lo;RIGHT: Dout = Ro;add: {C,Dout} = Lo+Ro;default Dout = 0;
endcase
endendmodule
3.3. CROMmodule CROM(init_ADDR, STATE_in, cmdout, CK, RST);// antetul programului`include "parameter.vh"//############### Initializarea porturilor ###############input [7:0] init_ADDR;input [state_nr-1:0] STATE_in;output [17:0] cmdout;input CK, RST;// declararea parametrilor
//############### Descriem ROM ###############reg [30:0] ROM[0:255];initial // blocul de initializare si definire a programului
8
8/7/2019 Proiectarea unui procesor n limbajul Verilog
9/12
begin// adrress ||
// n R1 introducem datele de la DinROM[0] = {R0, R1, R1, RIGHT, select, wr, no_test, mode_inc, no_label};
// In R2 introducem R1
ROM[1] = {R0, R1, R2, RIGHT, no_sel, wr, no_test, mode_inc, no_label};// R2--; if (R1 ==0 ) jump to adress 0x05ROM[2] = {R1, R1, R1, dec, no_sel, wr, zero, mode_cjmp, 8'd5};
// R4
8/7/2019 Proiectarea unui procesor n limbajul Verilog
10/12
Avnd la dispoziie modulele CROM i RALU, definrea proceosrului ocupnu mai mult de cteva rnduri
module procesor(Din, Dout, ck, rst);input [7:0] Din;output [7:0] Dout;input ck, rst;
wire [17:0] cmd;wire [state_nr-1:0] state;wire [3:0] LA;wire [3:0] RA ;wire [3:0] DA;wire [3:0] func;wire sel;wire w;assign {LA, RA, DA, func, sel, w} = cmd;CROM crom(8'd0, state, cmd,ck, rst);RALU ralu(LA, RA, DA, func, sel, w, Din, Dout, state, ck, rst);endmodule
3.5. Modulul de testaremodule test_procesor;reg rst, ck;reg [7:0] Din;wire [7:0] Dout;initial
beginrst=1;#10 rst=0;
endinitial
ck = 1;always
#10 ck = ck;initial
beginDin = 8'd5;
endprocesor DUT(Din, Dout, ck, rst);always
begin$display("din= %b dout=%b ck=%b rst=%d ", Din, Dout, ck, rst);#20 ;
endalways @(negedge ck)
Din = $random;endmodule
3.6. Prorgamul de test a procesorului
10
8/7/2019 Proiectarea unui procesor n limbajul Verilog
11/12
Pentru a testa procesorul, l-am programat iniial cu 6 instruciuni, care fiindexecutate, permit de a calcula suma datelor de intrare.
Schema bloc a programului este:
4. Rezultatele experimentale
11
8/7/2019 Proiectarea unui procesor n limbajul Verilog
12/12
5. Concluziin urma efecturii acestei lucrri de laborator, m-am familiarizat cu metodele
de proiectare i modelare a unui procesor elementar care execut i interpretez comenzile scrise n ROM-ul CROM-ului. Deci schimbarea funciilor procesoruluinseamn schimbarea microprogramului din ROM.Configuraia random de bii dinROM-ul CROM-ului este cea care definete funcioal sistemul. Structura fizicsimpl a mainii este folosit pentru a executa structura simboloc complex"stocat" n ROM.
12