Proiectarea unui Multiplicator folosind Verilog HDL

Laborator
7.5/10 (2 voturi)
Domeniu: Electronică
Conține 255 fișiere: doc, jpg, gif, png, bmp, htm, txt, cfg, do, dat, ini, adf, wsp, rep, rlb, lib
Pagini : 7 în total
Cuvinte : 1249
Mărime: 492.58KB (arhivat)
Publicat de: Leontin Istrate
Puncte necesare: 0
Profesor îndrumător / Prezentat Profesorului: Bragarenco Andrei
In acest laborator am folosit metoda flux de date pentru a descrie un multiplicator pe 4 biti. Este inclus si modulul de testare. Ministerul Educaţiei si Tineretului al Republicii Moldova Universitatea Tehnica a Moldovei Catedra MDS

Extras din laborator

1.Scopul lucrării:

Să se descrie multiplicatorul pe 4 biţi prin metoda flux de date.

2.Date teoretice

Verilog HDL reprezintă un limbaj utilizat pentru descrierea sistemelor digitale. Sistemele digitale pot fi calculatoare, componenete ale acestora sau alte structuri care manipulează informaţie digitala.

Verilog poate fi utilizat pentru descrierea sisemelor digitale din punct de vedere comportamental, structural şi flux de date:

Descrierea comportamentală este legată de modul în care operează sistemul şi utilizează construcţii ale limbajelor traditionale de programare, de exemplu if sau atribuiri.

Descrierea structurală exprimă modul în care entităţile/componentele logice ce alcătuiesc sistemul sunt interconectate în vedeea realizării comportamentului dorit.

Descriera prin metoda fulx de date - acest stil e similar ecuaţiilor logice, cu toate că nu e limitat numai la valori logice. Metoda constă în expresii ale semnalelor de intrare asociate ieşirii. În cele mai multe cazuri, o asemenea descriere uşor poate fi transformată într-o structură şi apoi implementată

Un exemplu simplu de utilizare a metodei flux de date este sescrierea unei porti logice NAND prin această metodă:

module NAND(in1, in2, out);

input in1, in2;

output out;

// instructiune de atribuire continuă

assign out = ~(in1 & in2);

endmodule

Porturile in1, in2 şi out sunt etichete pe fire. Atribuirea continuă assign urmăreşte în permanenţă eventualele modificări ale variabilelor din membrul drept, pentru reevaluarea expresiei şi pentru propagarea rezultatului în membrul stâng (out).

În acest caz, instrucţiunea efectuiază produsul semnalelor de pe firele in1 şi in2, neagă rezultatul şi comandă continutul la firul out:

assign out = ~(in1 & in2);

Atribuirile continue comandă variabile de tip wire şi sunt evaluate şi actualizate atunci când un operand de intrare îşi modifică valoarea.

NOTĂ: Metoda flux de date este utilizată pentru a modela logica combinaţională.

Multiplicatorul

Circuitele de deplasare ne permit realizarea multiplicării numai cu puterile întregi ale lui 2. Pentru a realiza orice înmulţire vor fi necesare circuite mai elaborate. Funcţia de multiplicare poate fi realizată în mai multe moduri. Pe lângă soluţia combinaţională, ce va fi prezentată în continuare, există şi soluţii secvenţiale sau soluţii programate. Cea combinaţională oferă varianta cea mai rapidă. Preţul plătit va include, în consecinţă, şi o "taxă de urgenţă", sub forma unui produs dimensiune - adâncime mare.

Fig. 1 Circuitul de înmulţire elementar, a. Structura internă, b. Simbolul logic. înmulţitorul elementar

Vom începe prin a prezenta structura unui înmulţitor elementar, IE, a unui circuit care realizează înmulţirea a două cuvinte de un bit. Structura acestui circuit va trebui să satisfacă trei cerinţe:

1. Să realizeze operaţia propriuzisă de înmulţire a celor doi biţi.

2. Să asigure operaţia de adunare presupusă de algoritmul de înmulţire al numerelor reprezentate pe mai mulţi biţi.

3. Să permită interconectarea într-o reţea bidimensională care asigură propagarea operanzilor şi a rezultatelor parţiale astfel încât să se poate realiza combinational operaţia de înmulţire.

Rezultă structura din Figura 1, unde:

• circuitul AND realizează operaţia propriuzisă de înmulţire a biţilor a şi b (produsul ia valoarea 1 numai dacă biţii a şi b au ambii valoarea 1),

• sumatorul complet de un bit SC care adună produsul realizat local cu cel realizat de bitul mai puţin semnificativ şi cu depăşirea obţinută de la sumari anterioare,

• biţilor a şi b trebuie să le fie asigurată propagarea către alte IE.

Înmulţitorul combinational

Pentru a proiecta un înmulţitor combinational pentru cuvinte de n biţi va trebui să interconectăm n2 IE într-o matrice bidimensională sugerată de algoritmul de înmulţire binară a două cuvinte de n biţi.

Fig. 2 Înmulţitor de 4 biţi.

Factorii produsului sunt a3 ... a0 şi b3 ... b0. iar câtul este x7 ... x0. înmulţitorul elementar aibj realizează produsul biţilor ai şi bj pe care-1 sumează la produsul ai-1 x bj-1 ţinând cont de depăşirea dată de sumarea realizată de înmulţitorul elementar ai-1bj

Implementarea multiplicatorului in VERILOG HDL:

Vom defini iniţial un multiplicator elementar, care este prezentat în figura 1:

module mule(cout,sout,a,b,cin,sin);

input a,b,cin,sin;

output cout,sout;

wire p;

assign p=a&b; // atribuie lui p produsul a şi b

assign {cout,sout}=p+sin+cin;

endmodule

Pentru a face un multiplicator pe mai mulţi biţi, trebuie să interconectăm mai multe multiplicatoare elementare cum e arătat în figura 2. În limbajul VERILOG HDL, acest lucru se fac în modul următor:

module mul_4(p,a,b);

input [3:0] a,b;

output [7:0] p;

mule m00(cout00, sout00, a[0], b[0], 1'b0, 1'b0);

mule m01(cout01, sout01, a[0], b[1], 1'b0, 1'b0);

mule m02(cout02, sout02, a[0], b[2], 1'b0, 1'b0);

mule m03(cout03, sout03, a[0], b[3], 1'b0, 1'b0);

mule m10(cout10, sout10, a[1], b[0], cout00, sout01);

mule m11(cout11, sout11, a[1], b[1], cout01, sout02);

mule m12(cout12, sout12, a[1], b[2], cout02, sout03);

mule m13(cout13, sout13, a[1], b[3], cout03, 1'b0);

mule m20(cout20, sout20, a[2], b[0], cout10, sout11);

mule m21(cout21, sout21, a[2], b[1], cout11, sout12);

mule m22(cout22, sout22, a[2], b[2], cout12, sout13);

mule m23(cout23, sout23, a[2], b[3], cout13, 1'b0);

mule m30(cout30, sout30, a[3], b[0], cout20, sout21);

mule m31(cout31, sout31, a[3], b[1], cout21, sout22);

mule m32(cout32, sout32, a[3], b[2], cout22, sout23);

mule m33(cout33, sout33, a[3], b[3], cout23, 1'b0);

assign p[3:0]={sout30,sout20,sout10,sout00};

assign p[7:4]={cout33,cout32,cout31,cout30}+{sout33,sout32,sout31}.

Preview document

Proiectarea unui Multiplicator folosind Verilog HDL - Pagina 1
Proiectarea unui Multiplicator folosind Verilog HDL - Pagina 2
Proiectarea unui Multiplicator folosind Verilog HDL - Pagina 3
Proiectarea unui Multiplicator folosind Verilog HDL - Pagina 4
Proiectarea unui Multiplicator folosind Verilog HDL - Pagina 5
Proiectarea unui Multiplicator folosind Verilog HDL - Pagina 6
Proiectarea unui Multiplicator folosind Verilog HDL - Pagina 7

Conținut arhivă zip

  • compile
    • contents.lib~lab_2_SEP
    • lab_2_SEP.epr
    • lab_2_SEP.erf
    • lab_2_SEP.opt
    • lab_2_SEP.opv
    • sources.sth
    • vcp_cmd.log
    • vsim.log
  • lab_2_sep
    • css
      • hde.css
      • lst.css
    • images
      • bde
        • back.gif
        • bar.gif
        • blank.gif
        • code.gif
        • codedown.gif
        • codeover.gif
        • fit.gif
        • fitdown.gif
        • fitover.gif
        • frame.gif
        • full.gif
        • fulldown.gif
        • fullover.gif
        • goto.gif
        • gotodown.gif
        • gotoover.gif
        • newwindow.gif
        • newwindowdown.gif
        • newwindowover.gif
        • panmode.gif
        • panmodedown.gif
        • panmodeover.gif
        • pop.gif
        • popdown.gif
        • popover.gif
        • prev.gif
        • prevdown.gif
        • prevover.gif
        • print.gif
        • printdown.gif
        • printover.gif
        • selectmode.gif
        • selectmodedown.gif
        • selectmodeover.gif
        • tbl.gif
        • tbldown.gif
        • tblover.gif
        • xprev.gif
        • zoomin.gif
        • zoomindown.gif
        • zoominover.gif
        • zoommode.gif
        • zoommodedown.gif
        • zoommodeover.gif
        • zoomout.gif
        • zoomoutdown.gif
        • zoomoutover.gif
      • ext
        • acp.gif
        • acpselected.gif
        • ahw.gif
        • ahwselected.gif
        • asf.gif
        • asfselected.gif
        • awf.gif
        • awfselected.gif
        • bas.gif
        • basselected.gif
        • bde.gif
        • bdeselected.gif
        • conf.gif
        • confselected.gif
        • cpp.gif
        • cppselected.gif
        • dlm.gif
        • dlmselected.gif
        • do.gif
        • doselected.gif
        • drw.gif
        • drwselected.gif
        • edn.gif
        • ednselected.gif
        • hp.gif
        • hpselected.gif
        • htm.gif
        • htmselected.gif
        • lst.gif
        • lstselected.gif
        • pl.gif
        • plselected.gif
        • sdf.gif
        • sdfselected.gif
        • symb.gif
        • symbselected.gif
        • tcl.gif
        • tclselected.gif
        • txt.gif
        • txtselected.gif
        • und.gif
        • undef.gif
        • undefselected.gif
        • undselected.gif
        • v.gif
        • vhd.gif
        • vhdselected.gif
        • vls.gif
        • vlsselected.gif
        • vselected.gif
        • vtb.gif
        • vtbselected.gif
        • xnf.gif
        • xnfselected.gif
      • fsm
        • bar.gif
        • code.gif
        • codedown.gif
        • codeover.gif
        • fit.gif
        • fitdown.gif
        • fitover.gif
        • frame.gif
        • full.gif
        • fulldown.gif
        • fullover.gif
        • newwindow.gif
        • newwindowdown.gif
        • newwindowover.gif
        • prev.gif
        • prevdown.gif
        • prevover.gif
        • print.gif
        • printdown.gif
        • printover.gif
        • zoomin.gif
        • zoomindown.gif
        • zoominover.gif
        • zoomout.gif
        • zoomoutdown.gif
        • zoomoutover.gif
      • ico
        • ahdl.ico
      • itab
        • back.bmp
        • empty.gif
        • left_n.bmp
        • left_s.bmp
        • n_n.bmp
        • n_nr.gif
        • n_s.bmp
        • right_n.bmp
        • right_s.bmp
        • s_n.bmp
        • tab_n.bmp
        • tab_s.bmp
      • lst
        • in.gif
        • out.gif
        • sig.bmp
        • sig.gif
        • var.gif
      • menu
        • win
          • blank.gif
          • folderclosed.gif
          • folderopen.gif
          • join.gif
          • joinbottom.gif
          • jointop.gif
          • line.gif
          • minus.gif
          • minusbottom.gif
          • minusonly.gif
          • minustop.gif
          • plus.gif
          • plusbottom.gif
          • plusonly.gif
          • plustop.gif
        • doc.gif
        • msie_doc.gif
        • msie_doc_mo.gif
        • msie_doc_sel.gif
        • ns_doc.gif
        • ns_doc_mo.gif
        • ns_doc_sel.gif
      • menucntrl
        • collapseall.gif
        • collapseall_f2.gif
        • expandall.gif
        • expandall_f2.gif
        • home.gif
        • home_f2.gif
        • shim.gif
      • set
        • coll.gif
        • exp.gif
        • norm.gif
      • tab
        • back.bmp
        • empty.gif
        • left_n.bmp
        • left_s.bmp
        • n_n.bmp
        • n_s.bmp
        • right_n.bmp
        • right_s.bmp
        • s_n.bmp
        • tab_n.bmp
        • tab_s.bmp
      • tree
        • empty.gif
        • folder_c.gif
        • folder_o.gif
        • join.gif
        • join_b.gif
        • join_l.gif
        • join_t.gif
        • line.gif
        • minus.gif
        • minus_b.gif
        • minus_o.gif
        • minus_t.gif
        • plus.gif
        • plus_b.gif
        • plus_o.gif
        • plus_t.gif
        • project.gif
      • wfm
        • back.gif
        • bar.gif
        • down.gif
        • downdown.gif
        • downover.gif
        • first.gif
        • firstdown.gif
        • firstover.gif
        • last.gif
        • lastdown.gif
        • lastover.gif
        • next.gif
        • nextdown.gif
        • nextover.gif
        • prev.gif
        • prevdown.gif
        • prevover.gif
        • up.gif
        • updown.gif
        • upover.gif
      • aldec.gif
      • logo.gif
      • logoback.bmp
      • logoback.gif
    • info
      • index.htm
    • splash
      • AhdlRegular.bmp
      • aldecpdffooter.txt
      • info.htm
    • src
      • MERGE
        • lab_2_SEP.v
          • index.htm
      • mule.v
        • index.htm
      • mul_4.v
        • index.htm
      • test_mule.v
        • index.htm
      • test_mul_4.v
        • index.htm
    • struct
      • aldec.htm
      • bdetools.js
      • fsmtools.js
      • is.js
      • map.htm
      • map.js
      • navig.js
      • noexport.htm
      • settings.htm
    • index.htm
    • menu.htm
    • menucntrl.htm
  • log
    • console.log
  • src
    • MERGE
      • lab_2_SEP.v
    • mule.v
    • mul_4.v
    • test_mule.v
    • test_mul_4.v
    • wave.asdb
  • 0lab_2_SEP.mgf
  • 1.jpg
  • 1lab_2_SEP.mgf
  • 3lab_2_SEP.mgf
  • Advdataflow.png
  • bde.set
  • compilation.order
  • compile.cfg
  • default_compile.do
  • Edfmap.ini
  • elaboration.log
  • exp2html.dat
  • lab_2_SEP.adf
  • lab_2_SEP.aws
  • lab_2_SEP.doc
  • lab_2_SEP.LIB
  • lab_2_SEP.rlb
  • lab_2_SEP.wsp
  • lab_2_SEP_0.rep
  • library.cfg
  • mule.png
  • projlib.cfg
  • synthesis.order

Alții au mai descărcat și

Automat Secvențial cu Bistabile

Tema de proiect Să se proiecteze un automat secvenţial cu bistabile care să evolueze după o diagramă cu cinci stări, descrisă de o secvenţă...

Monitorul

O clasificare sumara a monitoarelor ar putea fi dupa unul din criteriile : a) dupa culorile de afisare -monitoare monocrome (afiseaza doar doua...

Parametrii Antenelor

1. NOŢIUNI GENERALE. ANTENE DE REFERINŢĂ 1.1 LOCUL ŞI ROLUL ANTENELOR Pentru realizarea unei linii de radiocomunicatie de orice tip, este necesar...

Sisteme Electronice Programabile

INTRODUCERE Interacţia cu sfera obiectelor tehnice se realizează astăzi, din ce în ce mai mult prin gestul binar al tastării. Apăsam sau nu pe...

Laboratoare VHDL

Programarea structurilor hardware reconfigurabile de tip FPGA cu XILINX ISE 1. SCOPUL LUCRĂRII În această lucrare sunt prezentaţi paşii de lucru...

Operatori Verilog

Verilog Operators Operate On Several Data Types To Produce An Output I Not All Verilog Operators Are Synthesible (Can Produce Gates) I Some...

Proiectarea Decodoarelor și Multiplexoarelor în Verilog HDL

1.Scopul lucrării: Să se descrie următoarele module prin metoda structurală de descriere: 1. decodor 2 din 4; 2. folosind schema de extindere...

Proiectarea Automatului Finit (Semafor) în Verilog

Scopul lucrării: să se proiecteze un automat de dirijare cu luminile unui semafor. Noţiuni teoretice AUTOMATE FINITE Definiţia formală a...

Ai nevoie de altceva?