LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

Hasonló dokumentumok
Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

Kombinációs áramkörök modelezése Laborgyakorlat. Dr. Oniga István

LOGIKAI TERVEZÉS. Előadó: Dr. Oniga István Egytemi docens

Elektronikus dobókocka tervezési példa

PROTOTÍPUSKÉSZÍTÉS. Előadó: Dr. Oniga István

12. NYOMÓGOMBOK ÉS KAPCSOLÓK PERGÉSMENTESÍTÉSE A FEJLESZTŐLAPON

PROGRAMOZHATÓ LOGIKAI ESZKÖZÖK. Elıadó: Dr. Oniga István Egytemi docens

Tervezési módszerek programozható logikai eszközökkel

Újrakonfigurálható eszközök

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

Hardver leíró nyelvek (HDL)

Újrakonfigurálható eszközök

Mérési jegyzőkönyv. az ötödik méréshez

2008. október 9. Verzió

LOGSYS LOGSYS ECP2 FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 18. Verzió

Digitális technika (VIMIAA02) Laboratórium 3

Digitális technika (VIMIAA02) Laboratórium 3

Dr. Oniga István DIGITÁLIS TECHNIKA 8

Újrakonfigurálható eszközök

14. TARTALOM FUTTATÁSA A FEJLESZTŐLAP HÉTSZEGMENSES KIJELZŐJÉN

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Újrakonfigurálható eszközök

Digitális technika (VIMIAA02) Laboratórium 4

11. KÓDÁTALAKÍTÓ TERVEZÉSE HÉTSZEGMENSES KIJELZŐHÖZ A FEJLESZTŐLAPON

LOGIKAI TERVEZÉS PROGRAMOZHATÓ. Elő Előadó: Dr. Oniga István

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

Egyszerű RISC CPU tervezése

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Előadó: Dr. Oniga István

Verilog HDL ismertető 4. hét : hét dia

Hobbi Elektronika. A digitális elektronika alapjai: Újrakonfigurálható logikai eszközök

Újrakonfigurálható eszközök

Digitális technika II. (vimia111) 5. gyakorlat: Mikroprocesszoros tervezés, egyszerű feladatok HW és SW megvalósítása gépi szintű programozással

Digitális technika (VIMIAA02) Laboratórium 4

Digitális technika (VIMIAA02) Laboratórium 5.5

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk

LOGSYS LOGSYS SPARTAN-3E FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 19. Verzió

ISE makró (saját alkatrész) készítése

A Picoblaze Core implementálása FPGA-ba

Verilog HDL ismertető

Dr. Oniga István DIGITÁLIS TECHNIKA 4

Bevezető az ISE 13.2 rendszer használatához

DIGITÁLIS TECHNIKA 7. Előadó: Dr. Oniga István

Ellenőrző mérés mintafeladatok Mérés laboratórium 1., 2011 őszi félév

Verilog HDL ismertető 2. hét : 1. hét dia

A feladatokat önállóan, meg nem engedett segédeszközök használata nélkül oldottam meg: Olvasható aláírás:...

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

Beágyazott és Ambiens Rendszerek Laboratórium BMEVIMIA350. Mérési feladatok az 1., 2. és 3. mérési alkalomhoz

Bevezető az ISE 11.2 rendszer használatához

A Verilog HDL áttekintése

PROTOTÍPUSKÉSZÍTÉS. Előadó: Dr. Oniga István

Újrakonfigurálható eszközök

FPGA & Verilog ismertetı. BME Méréstechnika és Információs Rendszerek Tanszék

Digitális technika (VIMIAA01) Laboratórium 4

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Hobbi Elektronika. A digitális elektronika alapjai: Sorrendi logikai áramkörök 3. rész

10. EGYSZERŰ HÁLÓZATOK TERVEZÉSE A FEJLESZTŐLAPON Ennél a tervezésnél egy olyan hardvert hozunk létre, amely a Basys2 fejlesztőlap két bemeneti

Újrakonfigurálható eszközök

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Verilog ismertető (Szántó Péter, BME MIT, )

Bevezető az ISE 13.2 rendszer használatához

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Budapesti Műszaki és Gazdaságtudományi Egyetem. A Verilog HDL II. Nagy Gergely. Elektronikus Eszközök Tanszéke (BME) szeptember 26.

Kiegészítő segédlet szinkron sorrendi hálózatok tervezéséhez

Hobbi Elektronika. A digitális elektronika alapjai: Sorrendi logikai áramkörök 2. rész

Digitális technika (VIMIAA02) Laboratórium 1

Digitális technika (VIMIAA02) Laboratórium 1

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

LOGSYS EGYSZERŰ ALKALMAZÁS KÉSZÍTÉSE A LOGSYS KINTEX-7 FPGA KÁRTYÁRA A XILINX VIVADO FEJLESZTŐI KÖRNYEZET HASZNÁLATÁVAL június 16. Verzió 1.

DIGITÁLIS TECHNIKA 13. Dr. Oniga István

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

A VERILOG HARDVER LEÍRÓ NYELV ALKALMAZÁSA A LOGIKAI SZINTÉZISBEN

Verilog HDL ismertető

Mérési útmutató. Széchenyi István Egyetem Távközlési Tanszék. Impulzus szélesség moduláció (PWM) jellemzőinek vizsgálata

A MiniRISC processzor

Fehér Béla Szántó Péter, Lazányi János, Raikovich Tamás BME MIT FPGA laboratórium

Hobbi Elektronika. A digitális elektronika alapjai: Sorrendi logikai áramkörök 1. rész

PROGRAMOZHATÓ LOGIKAI. Előadó: Dr. Oniga István

DIGITÁLIS TECHNIKA (VIMIAA02)

LOGSYS DIGITÁLIS VIDEO INTERFÉSZ MEGVALÓSÍTÁSA A LOGSYS KINTEX-7 FPGA KÁRTYÁVAL június 16. Verzió 1.0.

LOGIKAI TERVEZÉS. Előadó: Dr. Oniga István egyetemi docens I félév

Újrakonfigurálható eszközök

PWM elve, mikroszervó motor vezérlése MiniRISC processzoron

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

A gyakorlatokhoz kidolgozott DW példák a gyakorlathoz tartozó Segédlet könyvtárban találhatók.

Hobbi Elektronika. A digitális elektronika alapjai: Kombinációs logikai hálózatok 2. rész

Számlálók, adatfeldolgozó egységek

Digitális elektronika gyakorlat

Periféria illesztési példák áramkörön belüli buszra (kiegészítés az előadás vázlathoz) Benesóczky Zoltán (2017)

Szántó Péter BME Méréstechnika és Információs Rendszerek Tanszék, FPGA Labor

Digitális technika VIMIAA hét

MSP430 programozás Energia környezetben. Hétszegmenses LED kijelzok

Mintavételes szabályozás mikrovezérlő segítségével

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Digitális technika (VIMIAA02) Laboratórium 2

Digitális rendszerek tervezése FPGA áramkörökkel Szimuláció és verifikáció

Mikrorendszerek tervezése

Digitális rendszerek tervezése FPGA áramkörökkel LOGSYS példa

Átírás:

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN Dr. Oniga István

1. Ismerkedés az ISE fejlesztőrendszerrel és a LOGSYS kártyával 2. Első projekt (Rajz) egyszerű logikai kapuk 3. Második projekt (Verilog) egyszerű logikai kapuk 4. Számláló (Verilog) 5. Komparátor. Multiplexer. Kódolok, dekódolok. 6. Fél összeadó. Teljes összeadó. ALU 7. 4 digites hétszegmenses kijelző meghajtása. 8. Másodpercszámláló 9. Digitális óra 10.Jelzőlámpa 1 11.Jelzőlámpa 2 (másodperc számlálóval) 12.Stopwatch (IPcore használata, DCM használata) 13.Frekvencia generátor 14.PWM 15.Fibonacci számláló

A feladatsor L7 1. 1 digites hétszegmenses kijelző 2. 4bites ALU eredmény 1 digites kijelzőn 3. 4 digites hétszegmenses kijelző 4. N bites számláló szimuláció 5. N bites számláló 6. 7. 8. Másodperc számláló Négy digites másodpercszámláló Nyolc bites számláló

A hétszegmenses kijelző Logsys/Basys kártyán module hex7seg ( input wire [3:0] x, output reg [6:0] a_to_g always @(*) case (x) 0: a_to_g = 7'b0000001; 1: a_to_g = 7'b1001111; 2: a_to_g = 7'b0010010; 3: a_to_g = 7'b0000110; 4: a_to_g = 7'b1001100; 5: a_to_g = 7'b0100100; 6: a_to_g = 7'b0100000; 7: a_to_g = 7'b0001111; 8: a_to_g = 7'b0000000; 9: a_to_g = 7'b0000100; 'ha: a_to_g = 7'b0001000; 'hb: a_to_g = 7'b1100000; 'hc: a_to_g = 7'b0110001; 'hd: a_to_g = 7'b1000010; 'he: a_to_g = 7'b0110000; 'hf: a_to_g = 7'b0111000; default: a_to_g = 7'b0000001; // 0 endcase endmodule module hex7seg_top ( input wire [3:0] sw, output wire [6:0] a_to_g, output wire [3:0] an, output wire dp assign an = 4'b0000; // all digits on assign dp = 1; // dp off hex7seg D4 (.x(sw),.a_to_g(a_to_g) endmodule

4 bites ALU eredménye 1 digites kijelzőn module hex7seg ( input wire [3:0] x, output reg [6:0] a_to_g always @(*) case (x) 0: a_to_g = 7'b0000001; 1: a_to_g = 7'b1001111; ---------------------------------------- 'hf: a_to_g = 7'b0111000; default: a_to_g = 7'b0000001; // 0 endcase endmodule module alu_hex7seg_top ( input wire [7:0] sw, input wire [2:0] btn, output wire [6:0] a_to_g, output wire [3:0] an, output wire [3:0] led, output wire dp wire [7:0] res hex7seg D4 (.x(res[3:0]),.a_to_g(a_to_g) alu alu_res (.a(sw[7:4]),.b(sw[3:0]),.f(btn),.r(res) assign an = 4'b1110; assign dp = 1; assign led = res[7:4]; endmodule // only one digits on // dp off

4 digites hétszegmenses kijelző meghajtása

TOP MODULE - 4 digites hétszegmenses kijelző meghajtása Listing 10.4 x7segb.v // Example 10d: x7segb - Display 7-seg with leading blanks // input cclk should be 190 Hz module x7segbc ( input wire [15:0] x, input wire cclk, input wire clr, output reg [6:0] a_to_g, output reg [3:0] an, output wire dp reg [1:0] s; reg [3:0] digit; wire [3:0] aen; assign dp = 1; // set aen[3:0] for leading blanks assign aen[3] = x[15] x[14] x[13] x[12]; assign aen[2] = x[15] x[14] x[13] x[12] x[11] x[10] x[9] x[8]; assign aen[1] = x[15] x[14] x[13] x[12] x[11] x[10] x[9] x[8] x[7] x[6] x[5] x[4]; assign aen[0] = 1; // digit 0 always on // Quad 4-to-1 MUX: mux44 always @(*) case(s) 0: digit = x[3:0]; 1: digit = x[7:4]; 2: digit = x[11:8]; 3: digit = x[15:12]; default: digit = x[3:0]; endcase Listing 10.4 (cont.) x7segb.v // 7-segment decoder: hex7seg always @(*) case(digit) 0: a_to_g = 7'b0000001; 1: a_to_g = 7'b1001111; 2: a_to_g = 7'b0010010; 3: a_to_g = 7'b0000110; 4: a_to_g = 7'b1001100; 5: a_to_g = 7'b0100100; 6: a_to_g = 7'b0100000; 7: a_to_g = 7'b0001111; 8: a_to_g = 7'b0000000; 9: a_to_g = 7'b0000100; 'ha: a_to_g = 7'b0001000; 'hb: a_to_g = 7'b1100000; 'hc: a_to_g = 7'b0110001; 'hd: a_to_g = 7'b1000010; 'he: a_to_g = 7'b0110000; 'hf: a_to_g = 7'b0111000; default: a_to_g = 7'b0000001; // 0 endcase // Digit select always @(*) begin an = 4'b1111; if(aen[s] == 1) an[s] = 0; end // 2-bit counter always @(posedge cclk or posedge clr) begin if(clr == 1) s <= 0; else s <= s + 1; end endmodule

Top modul assign x = {sw,btn[2:0],5'b01010}; // digit 0 = A Listing 10.5 x7segb_top.v // Example 10e: x7seg_top module x7segb_top ( input wire clk, input wire [3:0] btn, input wire [7:0] sw, output wire [6:0] a_to_g, output wire [3:0] an, output wire dp wire [15:0] x; // concatenate switches and 3 buttons assign x = {sw,btn[2:0],5'b01010}; // digit 0 = A x7segb X2 (.x(x),.clk(clk),.clr(btn[3]),.a_to_g(a_to_g),.an(an),.dp(dp) endmodule

N bites számláló leírása N paraméter Paraméter alapértelmezett értéke = 8 Aszinkron törlés (clr az érzékenység listában) module Ncounter # (parameter N = 8) ( input wire clr, input wire clk, output reg [N 1:0] q // N bit counter always @(posedge clk or posedge clr) begin if(clr == 1) q <= 0; else q <= q + 1; end endmodule

N bites számláló Új projekt (File New Project), Projektünk neve legyen counter (javaslat), Legmagasabb szintű forrásként HDL típust adjunk meg! Példányosítás: a paraméter megadásával kezdődik Ncounter #(.N(4)) cnt16 (.clr(clr),.clk(clk),.q(q) Szimuláció Láb hozzárendelés: Bemetek: clk, clr logsys (P129 és P119) Kimenetek: q led-ek

Másodperc számláló

Rategen modul Másodperc számláló 49999999

hex2seg modul Top modul

Négy digites másodpercszámláló

Top Modul HIBÁS!!!

Top Modul module wpbevtop1( input clk, btn0, sw0, output [3:0] q0, output [7:0] segn, output [3:0] dign reg rst; wire [15:0] hex; wire [7:0] seg; wire ce4, ce3, ce2, ce1; wire [3:0] q3, q2, q1, dig; always @(posedge clk) //Synchronize inputs begin rst <= (btn0 wire ce; rategen rategenerator(.clk(clk),.rst(rst),.cy(ce) count_sec counter0(.clk(clk),.rst(rst),.ce(ce),.q(q0),.eq9(ce1) endmodule count_sec counter1(.clk(clk),.rst(rst),.ce(ce&ce1),.q(q1),.eq9(ce2) count_sec counter2(.clk(clk),.rst(rst),.ce(ce&ce1&ce2),.q(q2),.eq9(ce3) count_sec counter3(.clk(clk),.rst(rst),.ce(ce&ce1&ce2&ce3),.q(q3),.eq9(ce4) disp_hex segdecoder (.clk(clk),.rst(rst),.val(hex),.seg(seg),.dig(dig) assign hex = {q3,q2,q1,q0}; assign segn = ~seg; // Board signals are active low assign dign = ~dig; // EZ A JÓ MEGOLDÁS!!!