INTEGRATED CIRCUIT DESIGN

Dan Nicula, Professor

term 7: 2C+2L
Evaluation:
1st homework (HDL design)           = 30%
2nd homework (FPGA design)          = 30%
1st subject (theoretical)           = 10%
2nd subject (application)           = 10%
3rd subject (schematic to Verilog)  = 10%
4th subject (Verilog to schematic)  = 10%

Overview | Prerequisites | Course Content | Lab works
Homework 1 | Homework 2
Bibliography | Links


Overview:

The course presents the design flow of a digital system implemented as an integrated circuit.


Prerequisites:


Course content:


Lab works:

  1. Notiuni introductive.
  2. Simularea modelelor HDL cu ModelSim (cod)
    • Lansarea in executie si configurarea ModelSim.
    • Compilarea si simularea unui proiect
    • Examinarea ierarhiei unui proiect
    • Examinarea formelor de unda ale semnalelor
    • Etapele simularii cu ModelSim
    • Adaugarea unui cursor din fereastra de afisare a formelor de unda.
    • Etapele simularii cu ModelSim (cod)
      • Constructia unui modul de simulare pentru un latch D si pentru un bistabil D.
      • Constructia unui mediu de simulare: test-bench, test
      • Configurarea ModelSim
      • Prezentarea feresterelor simulatorului
      • Compararea functionari a doua module
  3. Modelarea circuitelor combinationale (cod)
    • Modelarea circuitelor combinationale.
    • Exemplificarea circuitelor multiplexor, codificator, sumator.
    • Compilarea si simularea circuitelor combinationale.
    • Monitorizarea rezultatelor simularii.
    • Evidentierea hazardului combinational.
    • Circuite aritmetice
    • Primire tema 1
  4. Modelarea circuitelor secventiale (cod)
  5. Modelarea automatelor sincrone (cod)
  6. Modelarea si testarea registrelor (cod)
    • Registre de deplasare cu incarcare serie/paralela.
    • Registre cu reactie liniara (LFSR).
    • Modelul unui registru ce implementeaza algoritmul CRC32.
    • Testarea sistemelor digitale.
  7. Rezolvare TEMA 1 (1)
  8. Rezolvare TEMA 1 (2)
  9. Evaluare TEMA 1
    • Rezolvare TEMA 2 (1)
  10. Rezolvare TEMA 2 (2)
  11. Rezolvare TEMA 2 (3)
  12. Rezolvare TEMA 2 (4)
  13. Rezolvare TEMA 2 (5)
  14. Evaluare TEMA 2

    Tema 1: Modelare HDL + Simulare

    Sa se modeleze in Verilog un circuit de inmultire/impartire secventiala. Sistemul va fi partajat in cale de date si cale de control.

    Cerinte

    1. Cerinte generale
    2. Schema bloc a caii de date (desen de mana, cu creionul).
    3. Schema bloc a caii de control (desen de mana, cu creionul).
    4. Descrierea Verilog a unui modul care modeleaza comportamental circuitul.
      • cale de date
      • cale de control
      • structura de ansamblu
    5. Descrierea Verilog a unui modul care genereaza un set de vectori de test pentru circuit (test-bench).
    6. Descrierea Verilog a unui mediu de simulare (test) in care se vor instantia doua componente:
      • una corespunzatoare circuitului testat (DUT) si
      • una corespunzatoare generatorului de vectori de test.
      Reprezentarile grafice ale unitatilor de proiectare descrise.
    7. Structura rezultata prin sinteza cu Xilinx ISE.
    8. Cu exceptia portiunilor de cod, redactarea temei de casa se va de mana, cu creionul.
    9. Desenele cu structurile caii de date si a celei de control se vor realiza (obligatoriu) de mana (cu creionul).

    Tema 2: Implementare sistem digital in FPGA

    Se vor utiliza machete de proptotip "XILINX - Spartan 3E Starter board". Manual de referinta.
    1. LED mergator cu acumulare in stanga
    2. LED mergator cu acumulare in dreapta
    3. LED mergator cu acumulare in centru
    4. LED mergator cu acumulare in exterior
    5. Afisaj LCD tip "VU-metru" actionat de la butonul rotativ
    6. Afisaj LCD cu text controlat de la switch-uri
    7. Afisaj LCD cu bara controlata ca lungime prin buton rotativ
    8. Sumator numere de 1 digit cu afisare LCD
    9. Calcul CRC8
    10. RS232 Serial interface - receptie
    11. RS232 Serial interface - transmisie

    Cerinte

    1. Cerinte generale
    2. Simbol bloc al sistemului proiectat (desen de mana, cu creionul).
    3. Lista cu descrierea pinilor (nume, directie, dimensiune, descriere/functionalitate).
    4. Arhitectura sistemului, blocuri componente (desen de mana, cu creionul).
    5. Scheme de detaliu pentru proiectarea blocurilor componente (desen de mana, cu creionul).
    6. Descrierea Verilog a sistemului (cu ierarhie conform arhitecturii sistemului).
    7. Descrierea Verilog a unui modul care genereaza un set de vectori de test pentru circuit (test-bench).
    8. Descrierea Verilog a unui mediu de simulare (test) in care se vor instantia doua componente:
      • una corespunzatoare circuitului testat (DUT) si
      • una corespunzatoare generatorului de vectori de test.
    9. Reprezentarile grafice ale unitatilor de proiectare descrise (desen de mana, cu creionul).
    10. Proiectul Xilinx ISE Webpack, inclusiv rapoarte.
    11. Raport asupra performantelor implementarii (cost de resurse, frecventa maxima, etc) (compilatie din rapoarte, listate pe hartie).

    Bibliography:


    Links:


    Initiere in MODELSIM (simulator VHDL/Verilog)

    Informatii generale

    • Director de proiect este locul unde se vor gasi toate fisierele si bibliotecile asociate proiectului. Utilizatorul trebuie sa aiba drept de scriere in acest director. Se recomanda utilizarea directorului C:\HOME ca director de proiect.
    • Biblioteca de lucru este director unde se vor plasa rezultatele compilarii. Se recomanda folosirea denumirii implicite WORK.
    • Compilarea necesita ca parametru un fisier. Fisierul poate contine mai multe unitati de proiectare. Rezultatul compilarii se depune in biblioteca specificata (implicit WORK).
    • Simularea necesita ca parametru un cuplu entitate-arhitectura sau o configuratie (VHDL) sau un modul (Verilog). Totdeauna entitatea de nivel inalt nu are porturi.

    Etapele simularii

    • Pornire MODELSIM: Start/Programs/Modelsim/MODELSIM sau dublu-clic pe icon-ul de pe desktop.
    • Selectarea directorului de lucru (de proiect): File/Change Directory -> C:\HOME.
    • Crearea unei biblioteci in care se vor plasa modelele compilate: Design/Create a New Library -> WORK.
    • Editarea codului HDL: Notepad sau editor specializat pentru HDL.
    • Compilarea codului VHDL: icon specific sau comanda VCOM numeFisier.vhd
    • Compilarea codului Verilog: VLOG numeFisier.v
    • Simularea (incarcarea) modelului: icon specific sau comanda VSIM numeModulTop
    • Pregatirea pentru vizualizarea grafica a semnalelor: View/Signals, View/Wave/Signals in Region.
    • Executia modelului: run

    Exemplu Verilog: Bistabil D

      `timescale 1 ns/1ns
      
      module Dff (ck, reset_n, d, q);
      input    ck;          // semnal de ceas
      input    reset_n;     // semnal de reset asincron, activ in 0
      input    d;           // intrare D
      output   q;           // iesire Q
      reg      q; 
      
      always @(posedge ck or negedge reset_n)
      if (~reset_n)  q <= 1'b0; else        // valoare la reset
                     q <= d;                // q ia valoarea d la fiecare front crescator al ceasului
      
      endmodule
      
      // modul de test
      module tstDff ();
      reg   ck;
      reg   reset_n;
      reg   d;
      wire  q;
      
      // instantiere componenta de testat
      Dff UDff(
        .ck      (ck      ), 
        .reset_n (reset_n ),
        .d       (d       ), 
        .q       (q       ) 
        );
      
      // stimuli
      initial
      begin
        ck      <= 1'b0;
        reset_n <= 1'b1;
        d       <= 1'bx;
        @(posedge ck);
        reset_n <= 1'b0;
        @(posedge ck);
        @(posedge ck);
        reset_n <= 1'b1;
        d       <= 1'b0;
        @(posedge ck);
        @(posedge ck);
        d       <= 1'b1;
        @(posedge ck);
        @(posedge ck);
        @(posedge ck);
        @(posedge ck);
        d       <= 1'b0;
        @(posedge ck);
        @(posedge ck);
        @(posedge ck);
        d       <= 1'b1;
        @(posedge ck);
        @(posedge ck);
        @(posedge ck);
        $display("%M %t NOTA: Terminare simulare.", $time);
        $stop;
      end
      
      always  #10 ck <= ~ck;
      
      endmodule
      

    Cerinte generale referitoare la teme

    • Rezolvarea temei se va prezenta personal intr-un dosar avand urmatorul continut:
      • coperta va contine urmatoarele informatii:
        • numele disciplinei;
        • numarul si titlul temei (asa cum apare la inceputul paginii cu descrierea circuitului primit);
        • anul de studiu, numele si grupa studentului;
        • numele cadrului didactic;
        • anul universitar.
      • pagina intai va contine enuntul temei asa cum a fost primit;
      • raspunsurile la cerinte
    • Codul Verilog va contine comentarii justificative incluse in cod si in afara acestuia;
    • Structura modelata va fi insotita de jusfiticari.
    • Se vor respecta strict denumirile, tipurile si dimensiunile porturilor specificate pentru circuitul primit.
    • Comentariile cerute se vor referi la modalitatea de modelare aleasa si nu la teoria prezentata la curs. Nu se vor copia in cadrul temei de casa pasaje din bibliografie.
    • Numele alese pentru unitatile de proiectare vor sugera rolul acestora.
    • In cadrul fisierului, alinierea se va face cu doua spatii albe (tasta SPACE) sau TAB.
    • Fisierele cu modelele Verilog vor fi obligatoriu verificate prin simulare pe calculator cu simulatorul MODELSIM (disponibil pe calculatoarele din salile NII4). Fisierele Verilog (*.v) se vor preda odata cu dosarul. Un fisier va contine un singur modul Verilog. Numele fisierului va coincide cu numele modulului continut. Fiecare fisier va avea un antet in care va fi mentionata descrierea modulului.
    • Testarea modelului este scopul principal al simularii. Se va acorda atentie verificarii extensive a modelului descris.
    • Din punct de vedere didactic, "TEMA DE CASA" nu este acelasi lucru cu "PROIECT". Aceasta este o "Tema de Casa" si este obligatorie pentru promovarea disciplinei.
    • Redactarea temei de casa pe calculator NU este obligatorie.
    • Desenele vor fi realizate de mana, cu creionul (sunt admise stersaturi).