Tải bản đầy đủ (.pdf) (16 trang)

Thiết kế IC trên FPGA - 1 doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (755.88 KB, 16 trang )

7KLӃW NӃ IC trên FPGA
(Field-Programmable Gate Array )
ĈһQJBá .KҳF 7ULӅX
*LҧQJ viên Khoa CNTT
7UѭӡQJ Ĉ+%.Ĉj 1ҹQJ
1
2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1
Multiplier (PҥFK nhân)
 0ҥFK nhân có 2 input a,
b ÿӅX là 4 bit thì output
SKҧL là Pҩ\ bit?
 => output q SKҧL 8 bit
 9ӟL Verilog ta FKӍ FҫQ
dùng OӋQK gán:
assign q = a * b;
2
Multiplier
4
4
8
2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1
Multiplier, FKѭѫQJ trình PүX
module Multiplier(a, b, q);
input [3:0] a, b;
output [7:0] q;
assign q = a * b;
endmodule
 Khi xem report ta WKҩ\:
4x4-bit multiplier : 1
Cell Usage :
# BELS : 72


# AND2 : 37
# OR2 : 14
# OR3 : 1
# XOR2 : 20
# IO Buffers : 16
# IBUF : 8
# OBUF : 8
3
Multiplier
4
4
8
2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1
Comparator (PҥFK so sánh)
4
Greater
8
8
1
module Greater(a, b, a_gt_b);
input [7:0] a, b;
output a_gt_b;
assign a_gt_b = (a > b)? 1'b1 : 1'b0;
endmodule
 0ҥFK so sánh OӟQ KѫQ:
 Khi a > b thì cho ra giá WUӏ 1,
QӃX không thì cho ra giá WUӏ
0.
2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1
Comparator (PҥFK so sánh)

5
Equal
8
8
1
module Equal(a, b, a_eq_b);
input [7:0] a, b;
output a_eq_b;
assign a_eq_b = (a == b);
endmodule
 0ҥFK so sánh EҵQJ
 Khi a = b thì cho ra giá WUӏ 1,
QӃX không thì cho ra giá WUӏ
0.
2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1
ROM
 %ӝ QKӟ ROM ÿѭӧF mô
SKӓQJ QKѭ WKӃ nào?
6
 Input là ÿӏD FKӍ các ô QKӟ
Output là giá WUӏ OѭX trong
ô QKӟ ÿy
ROM
4 8
addr data
 /ұS EҧQJ WѭѫQJ quan
JLӳD addr và data
 Mô SKӓQJ:
 Dùng OӋQK gì ÿӇ mô
SKӓQJ?

addr data
00
11
24
39
14 196
15 225
2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1
&KѭѫQJ trình
7
module ROM(addr, data);
input [3:0] addr;
output [7:0] data;
assign data = romOut(addr);
function [7:0] romOut;
input [3:0] addr;
case (addr)
0: romOut = 0;
1: romOut = 1;
««««««
14: romOut = 196;
15: romOut = 225;
endcase
endfunction
endmodule
Macro Statistics
# ROMs : 1
16x8-bit ROM : 1
0ҥFK WXҫQ Wӵ
0ҥFK WXҫQ Wӵ là ORҥL PҥFK ÿLӋQ Wӱ Vӕ mà

tín KLӋX ÿҫX ra WҥL WKӡL ÿLӇP WӟL FKҷQJ
QKӳQJ SKө WKXӝF vào Wә KӧS giá WUӏ ELӃQ
vào WҥL WKӡL ÿLӇP KLӋQ WҥL mà còn SKө WKXӝF
vào tín KLӋX ÿҫX ra hiên WҥL.
8
2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1
D Flip-flop
 D Flip-flop là gì?
9
D
flip-flop
D
Clk
Q
Clock D Q Qprev
Rising edge 0 0 X
Rising edge 1 1 X
Non-Rising X Qprev
 %ҧQJ công tác FӫD D Flip-
flop ORҥL rising edge (thay
ÿәL WUҥQJ thái khi clock
FKX\ӇQ Wӯ 0 sang 1)
2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1
Module D_FlipFlop
10
module D_FlipFlop(clk, D, Q);
input clk, D;
output Q;
reg Q;
always @(posedge clk)

begin
Q <= D;
end
endmodule
 3KҫQ PӅP QKұQ ra
ÿk\ là Flip-flop NLӇX
D
2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1
D Flip-flop có set, reset
 Khi tín KLӋX set Wӯ 1 thành
0 thì Q EҵQJ 1
 Khi tín KLӋX reset Wӯ 1
thành 0 thì Q EҵQJ 0
11
 %ҧQJ công tác
D
flip-flop
RS
D
Clk
Q
Set
Reset
Clock Set Reset D Q Qprev
Rising edge 1 1 0 0 X
Rising edge 1 1 1 1 X
Non-Rising 1 1 X Qprev
X01X1X
X10X0X
2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1

Module D_FlipFlopWithSR
12
module D_FlipFlopWithSR(clk, set, reset, D, Q);
input clk, set, reset, D;
output Q;
reg Q;
always @(posedge clk or negedge set or negedge reset)
begin
if(reset == 0)
Q <= 0;
else if(set == 0)
Q <= 1;
else
Q <= D;
end
endmodule
2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1
0ҥFK WҥR ra
 3KҫQ PӅP FNJQJ QKұQ ra ÿk\ là Flip-flop
NLӇX D có set (prepare) và reset (clear)
13
2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1
JK Flip-flop có set, reset
 Khi tín KLӋX set Wӯ 1 thành
0 thì Q EҵQJ 1
 Khi tín KLӋX reset Wӯ 1
thành 0 thì A EҵQJ 0
14
 %ҧQJ công tác
JK

flip-flop
RS
J
Clk
Q
Set
Reset
K
JKQ
00Q
010
101
1 1 not Q
2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1
Module JK_FlipFlopWithSR
15
module JK_FlipFlopWithSR(clk, set, reset, J, K, Q);
input clk, set, reset, J, K;
output Q;
always @(posedge clk or negedge set or negedge reset) begin
if(reset == 0)
Q <= 0;
else if(set == 0)
Q <= 1;
else
case ({J, K})
2'b00: Q <= Q;
2'b01: Q <= 0;
2'b10: Q <= 1;
2'b11: Q <= ~Q;

endcase
end
endmodule
2009 ĈɴQJBá .KɬF 7ULɾX, GV khoa CNTT, WUɉ͝QJ Ĉ+%.Ĉ1
0ҥFK WҥR ra
 &KӍ có VҹQ Flip-flop NLӇX D có set (prepare) và
reset (clear). Flip-flop NLӇX JK FҫQ ÿѭӧF Wә
KӧS Wӯ Flip-flop NLӇX D và các FәQJ logic Fѫ
EҧQ khác
16

×