Bài giảng Thiết kế ICtrên FPGA(final) (Field-Programmable Gate Array )

module RegAndWire(clk, reset, inA, inB, wireOut1, wireOut2, regOut1, regOut2);

input clk, reset;

input [3:0] inA, inB;

output [3:0] wireOut1, wireOut2, regOut1, regOut2;

reg [3:0] regOut1, regOut2;

wire [3:0] testWire;

reg [3:0] testReg;

assign wireOut1 = inA + inB;

assign testWire = inA;

assign wireOut2 = testWire + inB;

always @(posedge clk) begin

regOut1 <= inA + inB;

testReg <= inA;

regOut2 <= testReg + inB;

end

endmodule

pdf27 trang | Chia sẻ: oanh_nt | Lượt xem: 1128 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Thiết kế ICtrên FPGA(final) (Field-Programmable Gate Array ), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
7KLӃW NӃ IC trên FPGA (final) (Field-Programmable Gate Array ) ĈһQJBá .KҳF 7ULӅX *LҧQJ viên Khoa CNTT 7UѭӡQJ Ĉ+%.Ĉj 1ҹQJ 1 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 Reg khác YӟLWire QKѭ WKӃ nào? module RegAndWire(clk, reset, inA, inB, wireOut1, wireOut2, regOut1, regOut2); input clk, reset; input [3:0] inA, inB; output [3:0] wireOut1, wireOut2, regOut1, regOut2; reg [3:0] regOut1, regOut2; wire [3:0] testWire; reg [3:0] testReg; assign wireOut1 = inA + inB; assign testWire = inA; assign wireOut2 = testWire + inB; always @(posedge clk) begin regOut1 <= inA + inB; testReg <= inA; regOut2 <= testReg + inB; end endmodule 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 Reg khác YӟLWire QKѭ WKӃ nào? module RegAndWire(clk, reset, inA, inB, wireOut1, wireOut2, regOut1, regOut2); input clk, reset; input [3:0] inA, inB; output [3:0] wireOut1, wireOut2, regOut1, regOut2; reg [3:0] regOut1, regOut2; wire [3:0] testWire; reg [3:0] testReg; endmodule 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 Reg khác YӟLWire QKѭ WKӃ nào? module RegAndWire(clk, reset, inA, inB, wireOut1, wireOut2, regOut1, regOut2); assign wireOut1 = inA + inB; assign testWire = inA; assign wireOut2 = testWire + inB; always @(posedge clk) begin regOut1 <= inA + inB; testReg <= inA; regOut2 <= testReg + inB; end endmodule 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 † wireOut1 và wireOut2 cho NӃW TXҧ JLӕQJ nhau † regOut1 và regOut2 cho NӃW TXҧ khác nhau Reg khác YӟLWire QKѭ WKӃ nào? 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 † wireOut1 và wireOut2 có input JLӕQJ nhau, output JLӕQJ nhau Reg khác YӟLWire QKѭ WKӃ nào? 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 Reg khác YӟLWire QKѭ WKӃ nào? 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 † Phân chia nhóm: „ 0ӛL nhóm WӕL ÿD 4 QJѭӡL „ 0ӑL QJѭӡL có WKӇ Wӵ do OұS nhóm, nhóm 1 QJѭӡL FNJQJ ÿѭӧF. „ /ұS nhóm có các thành viên khác OӟS FNJQJ ÿѭӧF 1ӝS bài WұS 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 † %ҧQ báo cáo YLӃW EҵQJ Word, JӱL theo email và in ra PӝW EҧQ QӝS WUӵF WLӃS „ 7KӡL gian: WҩW Fҧ QӝS vào FKLӅX WKӭ 4 ngày 6/5/2009 (QӃX có gì thay ÿәL VӁ thông báo sau) „ ĈӏD ÿLӇP: YăQ phòng khoa „ Ghi rõ: † +ӑ tên sv trong nhóm, mã Vӕ sinh viên, OӟS. † Ai ÿm làm YLӋF gì † 9ҩQ ÿӅ ÿm làm, KѭӟQJ JLҧL TX\ӃW † 9LӃW FKѭѫQJ trình † &KөS OҥL NӃW TXҧ FKҥ\ simulation và WKX\ӃW minh NӃW TXҧ ÿy là ÿ~QJ † Nêu FҧP WѭӣQJ 1ӝS bài WұS (2) 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 1. 7KLӃW NӃ PҥFK nhân ÿѭӧF FҩX WҥR EӣL ít FәQJ logic QKҩW. %LӃW UҵQJ khi Vӱ GөQJ phép nhân trong Verilog thì 8b x 8b KӃW 368 FәQJ, 16b x 16b KӃW 1632 FәQJ. (Nhóm 1 QJѭӡL) 2. 7KLӃW NӃ PӝW thanh RAM (có WKӇ ÿӑF, ghi Gӳ OLӋX) YӟL dung OѭӧQJ tùy FKӑQ. (Nhóm 1 QJѭӡL) 3. 7KLӃW NӃ PӝW CPU ÿѫQ JLҧQ, Vӱ GөQJ RAM làm Eӝ QKӟ FKӭD OӋQK và NӃW TXҧ. 4. 7ӵ do. 7KLӃW NӃ GӵD trên tài OLӋX tham NKҧR KRһF Wӵ suy QJKƭ. 1Kӟ ghi rõ tên tài OLӋX tham NKҧR, [XҩW [ӭ và PҥFK ÿy không trùng OһS YӟL QKӳQJ PҥFK ÿѫQ JLҧQ ÿm trình bày trong bài JLҧQJ ĈӅ bài 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 † Sau PӛL clock giá WUӏ WăQJ lên 1 † => 0ҥFK ÿӃP ÿѫQ JLҧQ QKҩW bao JӗP PӝW D Flip-flop và PҥFK FӝQJ 1. Counter (PҥFK ÿӃP) 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 &KѭѫQJ trình module counter1(clk, reset, counter); input clk, reset; output [3:0] counter; reg [3:0] counter; always @(posedge clk or posedge reset) begin if(reset) counter <= 0; else counter <= counter + 1; end endmodule 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 † Là counter FKӍ WKӵF KLӋQ YLӋF ÿӃP khi có tín KLӋX cho phép (enable) Counter có tín KLӋX Enable 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 &KѭѫQJ trình module counter2(clk, reset, enable, counter); input clk, reset, enable; output [3:0] counter; reg [3:0] counter; always @(posedge clk or posedge reset) begin if(reset) counter <= 0; else if(enable) counter <= counter + 1; else counter <= counter; end endmodule 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 † Là PҥFK ÿӃP GӵD vào tín KLӋX up/down mà ÿӃP xuôi hay QJѭӧF trong SKҥP vi Wӯ 0 ÿӃQ 9 † .ӃW KӧS YӟL module KLӋQ WKӏ ÿqQ LED ÿӇ ELӇX GLӉQ Vӕ WKұS phân † => Bài WұS 5: WKLӃW NӃ PҥFK ÿӃP KLӋQ WKӏ 2 ô Vӕ 7 ÿRҥQ ÿѭӧF ELӇX GLӉQ EҵQJ ÿqQ LED. Counter up/down 0~9 SG7 SG1 SG4 S G 2 S G 3 S G 6 S G 5 SG7 SG1 SG4 S G 2 S G 3 S G 6 S G 5 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 † &ҩX WҥR JӗP: „ PC: program counter „ ROM: FKӭD OӋQK „ ALU: JLҧL mã OӋQK + WKӵF KLӋQ phép toán ÿѫQ JLҧQ Simple CPU 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 1. 7ҥR PC (program counter), YӟL ÿӏD FKӍ cao QKҩW là ¶K) 2. 7ҥR ROM có FKӭD 16 Gӳ OLӋX, PӛL Gӳ OLӋX 32 bits 3. ALU ÿѫQ JLҧQ có FKӭD SKҫQ JLҧL mã OӋQK 4. .ӃW KӧS 3 module trên Các EѭӟF WKӵF KLӋQ 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 † *LӕQJ QKѭ PӝW PҥFK ÿӃP. 1. 7ҥR PC module PC(clk, reset, proCounter); input clk, reset; output [3:0] proCounter; reg [3:0] proCounter; always @(posedge clk or posedge reset) begin if(reset) begin proCounter <= 0; end else begin proCounter <= proCounter + 1; end end endmodule 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 † /ӋQK có FҩX trúc ÿѫQ JLҧQ QKѭ sau: „ 8 bits ÿҫX là Opcode, FKӭD thông tin là phép FӝQJ, hay WUӯ« „ 8 bits + 8 bits WLӃS theo là 2 giá WUӏ FӫD phép toán „ 8bits FXӕL ÿӇ WUӕQJ 2. 7ҥR ROM 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 2. 7ҥR ROM (2) module ROM(addr, data); input [3:0] addr; output [31:0] data; assign data = dataOut(addr); function [31:0] dataOut; input [3:0] addr; begin case(addr) 4'h0: dataOut = 32'h01_02_04_00; // add 4'h1: dataOut = 32'h02_1f_03_00; // sub default dataOut = 32'h00000000; endcase end endfunction endmodule 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 3. ALU ÿѫQ JLҧQ module SimpleALU(clk, reset, instruction, result); input clk, reset; input [31:0] instruction; output [15:0] result; reg [15:0] result; always @(posedge clk or posedge reset) begin if(reset) begin result <= 0; end else begin case(instruction[31:24]) 8'h01: result <= instruction[23:16] + instruction[15:8]; // add 8'h02: result <= instruction[23:16] - instruction[15:8]; // sub endcase end end endmodule 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 4. .ӃW KӧS module SimpleCPU(clk, reset, dataOut); input clk, reset; output [15:0] dataOut; wire [3:0] addr; wire [31:0] instData; PC pc1(.clk(clk), .reset(reset), .proCounter(addr)); //PC pc2(.clk(clk), .proCounter(addr), .reset(reset)); ROM rom1(.addr(addr), .data(instData)); SimpleALU ALU1(.clk(clk), .reset(reset), .instruction(instData), .result(data Out)); endmodule 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 .ӃW TXҧ 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 † Khi NKӣL ÿӝQJ FKѭѫQJ trình simulation ta FKӍ WKҩ\ tín KLӋX input và output FӫD module ngoài cùng 3KѭѫQJpháp xem tín KLӋX bên trong 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 † Click FKXӝW trái vào FKӳ 887ӣPHQXbên trái ta VӁ WKҩ\ ÿѭӧF 2 tín KLӋX WҥP là addr và instData 3KѭѫQJpháp xem tín KLӋX bên trong 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 † 1KҩS FKXӝW trái vào tín KLӋX ӣ{Name và kéo WKҧ vào ô Messages; UӗL EҩP nút restart; ÿһW giá WUӏ WKӡL gian phù KӧS; UӗL EҩP nút run ta VӁ xem ÿѭӧF tín KLӋX ÿy. 3KѭѫQJpháp xem tín KLӋX bên trong 2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1 † Click FKXӝW vào GҩX + bên FҥQK UUT VӁ KLӋQ ra các module QKӓ; ta có WKӇ xem giá WUӏ các tín KLӋX này QKѭ SKѭѫQJ pháp trên 3KѭѫQJpháp xem tín KLӋX bên trong

Các file đính kèm theo tài liệu này:

  • pdfvietstudy_net_thietkemachlogicbangverilog.pdf
Tài liệu liên quan