Table of Contents

Vivado

Vivado Design Suite e un pachet software dezvoltat de compania Xilinx (achiziționată de AMD) pentru a programa FPGA-uri.

Vivado permite editarea, simularea și sintetizarea codului de descriere hardware (HDL) pe plăcuța Nexys A7 folosită în laborator.

Ghid de instalare Vivado

Official DocNav Guide: Vivado Getting Started

Verilog

Verilog este un HDL (Hardware Description Language) folosit pentru specificarea formală a circuitelor electronice digitale.

Modulul este unitatea de bază a limbajului Verilog. Definește interfața (intrările și ieșirile) și comportamentul unui circuit electronic. Putem descrie comportamentul unui modul în trei moduri:

module A(input in, output out);
    not(out, in);
endmodule
 
module B(input in, output out);
    assign out = ~in;
endmodule
 
module C(input in, output reg out);
    always @(*)
    begin
        out = ~in;
    end
end

În Verilog putem folosi două tipuri de date:

wire a;
wire [7:0] b;
reg c;
reg [0:7] d;

Pentru a controla ce date se află pe fire sau în registre, avem la dispoziție mai multe tipuri de atribuiri:

module A(input in);
    wire a;
    reg b;
    reg c;
 
    assign a = in;
 
    always @(*)
    begin
        b = in;
    end
 
    always @(*)
    begin
        c <= in;
     end
endmodule

Dacă alegem descrierea procedurală avem la dispoziție două blocuri speciale:

Pentru o listă completă a blocurilor procedurale ce pot fi folosite în limbajul verilog, consultați laboratorul 2 de la SOC.

Logică combinațională și secvențială

Circuitele logice combinaționale sunt circuitele reprezentate prin porți logice ce aplică o funcție pe intrări. Valorile de ieșire depind doar de valorile de intrare, nu și de stări de reactie (feedback), iar cand starea unei intrări se schimbă, se reflectă imediat la ieșiri.

Circuit combinațional

Spre deosebire de circuitele logice combinaționale, la cele secvențiale valorile de ieșire nu mai depind exclusiv de starea curentă a intrărilor, ci și de stările anterioare ale circuitului.

Circuit Secvențial

Pentru mai multe informații despre circuitele logice, consultați laboratorul 0 de SOC.

Automate cu stări finite (FSM)

Un automat finit este, în sensul cel mai abstract, un model de calculabilitate. Trăsătura fundamentală a automatelor finite este faptul că se află, la orice moment de timp, într-una dintr-un număr finit de stări posibile. De asemenea, în anumite condiţii, ele pot executa tranziţii între aceste stări. Astfel, un automat este descris de: intrări, ieșiri, stări și tranziții.

În funcție de relația dintre intrare, ieșire și starea curentă există două tipuri de automate: Mealy și Moore. La automatele Mealy, ieşirea depinde de starea curentă şi de input-ul curent. Astfel, o ieșire corespunde unei tranziții.

Diagramă automat Mealy

La automatele Moore, pe de altă parte, ieșirea este determinată exclusiv de starea în care se află.

Diagramă automat Moore

Pentru mai multe informații despre FSM, consultați laboratorul 4 de SOC.