Trang 98 - OUTnào trong entity.. architecture ngõ vào và tín nhau entityVHDL.. - component entity entity - architecture - component architecture mponent có 5.2 CÁC KHAI BÁO TRONG VHDL.
Trang 25
Trang 3I III
1
1.1 QUAN 1
1.2 QUÁ TRÌNH 2
1.3 NGÔN MÔ 4
1.4 CÔNG ALTERA, 5
1.5 RÚT HÀM PHÁP QUINE-MC CLUSKEY 7
TÓM 10
CÂU ÔN 10
11
2.1 QUAN 11
2.2 ROM (READ-ONLY MEMORY) 12
2.3 PLD (PROGRAMMABLE LOGIC DEVICE) 19
(Combinational PLD) 19
27
TÓM 30
I 31
3.1 MÁY THÁI 31
3.2 PHÂN TÍCH MÁY THÁI 35
3.3 MÁY THÁI 40
TÓM 58
CÂU ÔN 58
BÀI 4: ABEL 65
4.1 TRÚC TRÌNH ABEL 65
4.2 CÁC PHÁT (STATEMENTS) 66
4.3 CÁC KHAI BÁO (DECLARATIONS) 72
4.4 CÁC KHAI BÁO KHÁC 73
4.5 CÁC TOÁN (OPERATORS) 75
4.6 CÁC (PREFIX), (SUFFIX) 76
4.7 GHI CHÚ (COMMENTS) 77
4.8 CÁC VÍ 77
TÓM 88
CÂU ÔN 88
BÀI 5: VHDL 89
5.1 TRÚC NGÔN VHDL 89
5.2 CÁC KHAI BÁO TRONG VHDL 99
Trang 45.3 CÁC VHDL 103
5.4 VÍ CÁC M VÀ 130
TÓM 138
CÂU ÔN 138
BÀI 6: VERILOG 139
6.1 QUAN: 139
6.2 CÁC TRONG VERILOG 140
6.3 CÁC TRONG VERILOG 141
6.4 CÁC 142
6.5 TOÁN 146
6.6 TOÁN 151
6.7 MODULES 152
6.8 KHUÔN M HÀNH VI (BEHAVIORAL) 155
6.9 ALWAYS VÀ INITIAL 160
6.10 HÀM 162
6.11 LINH 165
6.12 VÍ 166
TÓM 173
CÂU ÔN 173
TÀI THAM 174
Trang 81.2 QUÁ TRÌNH THI T K H TH NG S
Hình 1.1: Quá Tr
t
Trang 9BÀI 1: 3 N
Hình 1.2 trình
hay danh
Trang 10: Programmable Gate Array (FPGA), Complex Programmable Logic Device (CPLD), vi
Field-
1.3 NGÔN NG MÔ T PH N C NG
s - Hardware Description Languages)
u, ê
-
- CDL (Computer Design Language
- CONLAN (Consensus Language
này cho phép
bên ngoài
- IDL (Interative Design Language
bao
Trang 12- Cypress Semiconductor Warp
War
pASIC80
- Mentor Graphic là hãng ph
Trang 17
PLD
PLA PAL
PPAL EPPAL EEPPAL
LCA EPLD PEEL
(Pro
elec
erasable Logic)
GAL (generic array logic)
Trang 18ROM= Read Only Memory
EP = Erasable and Programmable
PLD = Programmable Logic Device
2.2 ROM (READ-ONLY MEMORY)
Trang 19BÀI 2: 13
m x n (bit)
m ngõ vào, n ngõ m
Trang 21BÀI 2: 15
Hình 2.6
Trang 222.3: ROM 128x1
Hình 2.7
Hình 2.8
Trang 23BÀI 2: 17
2.3: ROM 128x1
Hình 2.7
Hình 2.8
Trang 24Hình 2.9
Hình 2.10
Trang 25BÀI 2: 19
output
(OE: cho phép chip select
2.3 PLD (PROGRAMMABLE LOGIC DEVICE)
Trang 28Hình 2.14Chú ý:
16
ví
L
C
Trang 29BÀI 2: 23
Hình 2.15: VV
Hình 2.16
Trang 34AND (flip-flop +I/O)
Trang 36Hình 2.21:
Trang 38
xung clock
các
flip-kích
làm hai
3.1a và 3.1b
X
Trang 39BÀI 3: 33(a) Mealy
(b) Moore Hình
Trang 44.3 và gi
3
3.1b
Trang 47BÀI 3: HÁI 41ASM, )
-là
n
(hình 3.10) Các nhãn trên gi
Trang 49BÀI 3: 43thái khác
S0 S2 S0
S1 S2 S1
Trang 51S1 S2 S3 S1
0
0
0
1 3.15
Trang 52g phân nhóm P1
trong P1
Trang 53BÀI 3: 47
1
1-
0-Hình 3
nhóm trong P1
1
Trang 54nhóm
i i-1, i>1
i-1 i-1
i-1
Trang 55BÀI 3: 49
b
h3thái trên hình 3
Trang 56A-
Trang 58
b = 000 010
c = 000 011
d = 010 111
Trang 62Hình 3 3.5
33.22 Hình 3
Trang 64Z X
Trang 65BÀI 3: 59
-D cho Q1Q0 = 00-11)
Hình P3.3
inst13 AND2
inst14 AND2
inst15 AND3
inst16
AND3
inst17 AND3
Q
Q CLK J
Y'
Y' Q0'
Q1 Q1
Q0
J0 K0
X Q0 Q1
X
Y
Z
CLK
Trang 66Q1 X
Q2 Q1 Q2
Q
X' Q2' Q2'
X'
Q0' Q0' X' Q0
Y
Trang 701 1 1 1 2 2 2 2 2 1 1 2
X = 1 0 0 1 1 0 1 0 0 0 1 1
Z = 0 1 0 0 0 1 0 1 1 0 0 0
Trang 72END My_Example
MODULE My_Example (A,B)
C=A+B END My_Example
Cú pháp
string
module m6809a
Jean Designer
Trang 73Cú pháp truth_table (inputs -> outputs)
hay truth_table (inputs : > reg_outs) Truth
inputs outputs reg_outs ->
Trang 74Cú pháp State_diagram state variables
state
state_expequations
gõ vào
1 và x2
FF) State_diagram Q State S0: if (x1&x2 = =0) then S2 Else S1
z=0
Trang 75then
3 state 0 : if a then 1 else if b then 2 else if c then 3 else 0;
Trang 76Cú pháp Case [exps1 : state+exp1;]
[expsi : state_expi;]
end case;
STATE S0:
CASE (sel == 0): S0 ; (sel == 1): S1 ; ENDCASE
[invalues out values]
các noteinputsOutputs
InvaluesOutvalues
Trang 77BÀI 4: ABEL 71
Cú pháp
signalattr
Q )
Cú pháp End
Hay end modname
signalattr
Q )
Trang 784.3 CÁC KHAI BÁO (DECLARATIONS)
Pin
Cú pháp
pin_id:
-pin #attr
A,B node 25,26 : gán tên A là nút 25,
Trang 79BÀI 4: ABEL 73Device
Cú pháp Device-id device real_device;
device-idreal-device
4.4 CÁC KHAI BÁO KHÁC
Cú pháp
idexpr
Trang 80Macro
Cú pháp Macro_id macro
odule
macro_iddummy_argblock
NAND3 macro (A,B,C) {!(A&B&C)}
C B
A
D = NAND 3 (Clock, Hello, busy);
Trang 81BÀI 4: ABEL 75Enable
Cú pháp Enable output_id = [!]expr;
output_idexpr
OE pin11;
F0,F1,F2,F3 pin 19,18,17,16;
Count = [F0,F1,F2,F3];
Equations Enable count = !OE
@ALTERNATE
ình)
Trang 83A2 A3
Y0
S1
U2 16V8
1 2 3 4 5 6 7 8 9 11
12 13 14 15 16 17 18 19
I0 I1 I2 I3 I4 I5 I6 I7 I8 I9
F0 F1 F2 F3 F4 F5 F6 F7
B1
C0
Y1 C2
Y2 A0
B3
Y3 C3
S0 A1
C1 B2 B0
Trang 84Ngõ ra : [y0, y1, y2, y3]
Trang 86(select = = ^b00)
ame
Module mod- -
Trang 89BÀI 4: ABEL 83
Module mod- -
1 2 3 4 5 6 7 8 9 11
12 13 14 15 16 17 18 19
I0 I1 I2 I3 I4 I5 I6 I7 I8 I9
F0 F1 F2 F3 F4 F5 F6 F7
G2
Y02 Y31 B2
Y21
Y22 G1
A1
A2
Y32
Trang 90[1,0,0] -> [H,H,H,L]; [1,0,1] -> [H,H,L,H]; [1,1,0] -> [H,L,H,H]; [1,1,1] -> [L,H,H,H]; [0,X,X] -> [H,H,H,H];
test_vectors (inputs1-> outputs1) [1,0,0] -> [H,H,H,L]; [1,0,1] -> [H,H,L,H]; [1,1,0] -> [H,L,H,H]; [1,1,1] -> [L,H,H,H]; [0,1,0] -> [H,H,H,H];
Trang 91
Module mod- -
-5:
4
mode thanh ghi
Trang 92U2 16V8
1 2 3 4 5 6 7 8 9 11
12 13 14 15 16 17 18 19
I0 I1 I2 I3 I4 I5 I6 I7 I8 I9
F0 F1 F2 F3 F4 F5 F6
Q0
CK CL
0
Q
Cl Q Q Q Q
Q
Cl Q Q Q
Q
Cl Q Q
Q
.0.1.23
3
.0.12
2
.01
1
Trang 93BÀI 4: ABEL 87trình
Trang 94Sinh v
Câu 1:
Câu 2:
Trang 96PACKAGE example_arithmetic IS
- Subprogram declaration
- Type, subtype declaration
- Constant, deferred constant declaration
- Signal declaration creates a global signal
Trang 97PORT( A,B : IN BIT;
SUM,CARRY : OUT BIT);
Trang 98attribute pinnum: string;
attribute pinnum of c: signal is "1,2,3";
attribute pinnum of d: signal is "6,5,4";
attribute pinnum of e: signal is "2";
END my_design;
Trang 99BÀI 5: VHDL 93ARCHITECTURE
PORT( A,B : IN BIT;
SUM,CARRY : OUT BIT);
X1: XOR2 port map (A,B,SUM);
A1: AND2 port map (A,B,CARRY);
END HA_STRUCTURE;
trí
Trang 100ENTITY HALF_ADDER IS
PORT( A,B : IN BIT;
SUM,CARRY : OUT BIT);
Ví
ENTITY HALF_ADDER IS
PORT( A,B : IN BIT;
SUM,CARRY : OUT BIT);
Trang 101BÀI 5: VHDL 95-FF:
structure dataflow
behavior
Trang 102ENTITY FULL_ADDER IS
PORT( A,B,CIN : IN BIT;
SUM, COUT : OUT BIT);
Trang 104For A3: AND2
Use entity HS_LIB.AND2HS(AND2STR);
PORT MAP (HS_B => A1, HS_Z=>Z, HS_A => A0 );
End for;
For all : OR2
Use entity CMOS_LIB.OR2CMOS(OR2STR);
End for;
For others: AND2
Use entity WORK.A_GATE(A_GATE_BODY);
X1: XOR2 port map(A, B, S1);
X1: XOR2 port map(S1, Cin, SUM);
A1: AND2 port map(S2, A, B);
A2: AND2 port map(S3, B, Cin);
A3: AND2 port map(S4, A, Cin);
O1: OR2 port map(S2, S3, S5);
O2: OR2 port map(S3, B, Cin);
NAND_GATE port map(S4,S5,Cout);
END FA_STR;
Trang 105BÀI 5: VHDL 99
Type STATE_TYPE is (HALT, READY, RUN, ERROR);
HALT< READY< RUN< ERROR
Variable STATE: STATE_TYPE;
Type
Function CODE (C: in INTEGER) return CODE_TYPE;
Trang 106-
type LENGTH is range 0 to 1000;
type BYTE_INT is range 128 to 127;
type MY_INTEGER is range -2147483647 to 2147483647;
-
Type WORD is array (31 downto 0) of BIT;
Type RAM is array (1023 downto 0) of WORD;
Thay vì:
Type OTHER_RAM is array (1023 downto 0, 31 downto 0) of BIT
-
Trang 107BÀI 5: VHDL 101
Architecture A of E is
Type CODE_TYPE is (NONE, DATA, STATMT) ;
Type ITEM_TYPE is record;
Trang 108after và reject không
xác
wait forfor
Trang 109BÀI 5: VHDL 103
Constant constant_name : type_name [:=value]
Constant rise_time : time :=10 ns;
Constant bus_width : integer :=8;
Type TAB2 is array (BIT, BIT) of BIT;
Constant
Signal Z, A, B : BIT;
Z <= AND_TAB (A,B);
Trang 110Z <= CST1 when else S when B= CST2 else CST3;
Variable variable_name: type_name [:=value];
Variable CTRL_STATUS : BIT_VECTOR (10 DOWNTO 0);
Trang 111BÀI 5: VHDL 105Entity MEMO_ONE is
Port ( DATA: in BIT_VECTOR (1 downto 0);
CLOCK :in BIT;
Trang 112Signal clock: bit;
Trang 113BÀI 5: VHDL 107
AN,
A and B nand C; (A and B) nand C;
Signal S, X, Y: BIT_VECTOR (1 downto 0);
Trang 114Các t
is true is true is also true
Trang 115BÀI 5: VHDL 109
là sll, srl, sla, sra, rol và ror
Phép chia "/", phép nhân "* mod rem
Trang 116
H
Trang 117BÀI 5: VHDL 111
Signal <= a_waveform_with_one_item_and_without_delay_expression
waitwait
Trang 118
Wait until and
if
Trang 120
If CONDITION (l1, l2,l3) then RESULT <= DATA (l1, l2, l3);
End if;
ra
Type CODE_TYPE is (ADD, SUB, RST, INCX);
Subtype WORD is INTEGER range 0 to 3;
Signal CODE: CODE_TYPE;
Trang 121RESULT <= DEFAULT_VALUE; default assignment
If CONDITION (l1, l2, l3) then RESULT <= DATA (l1, l2, l3, RESULT);
End if;
ra rõ ràng:
If CONDITION (l1, l2, l3)
then RESULT <= DATA (l1, l2, l3, RESULT);
else RESULT <= DEFAULT_VALUE;
End if;
luôn là TRUE
Trang 123Process synchronous finite state machine with two states
Type T_STATE is (STOP, GO);
Variable STATE: T_STATE;
Begin
Wait until
Case STATE is variable STATE is read
before being target of assignment
when STOP => STATE:= GO;
when GO => STATE:= STOP;
end case;
End process;
Trang 124S <= A;
Các phép gán tín
Trang 125BÀI 5: VHDL 119Component.
Khi sa
Architecture SYNTHESIZABLE of DRIVE is
Signal ORDER: ORDER_TYPE;
Signal CONTROL: BIT;
Signal DATA_IN, DATA_OUT: BIT_VECTOR(1 to N);
for CONTROLER : CTRL use entity WORD.CTRL(A);
for OPERATIÊNG_PART:OPRT use entity WORD OPRT(A) generic map (N);
begin
two component instantiation statements
CONTROLER: CTRL port map(CONTROL, ORDER);
OPERATIVE_PART: OPRT port map (ORDER, DATA_IN, DATA_OUT);
End SYNTHESIZABLE;
Trang 127-
-
Trang 128resolved
P (A, B, C); concurent procedure call;
Process process equivalent to the previous concurent procedure call
Begin C is assumed to be an actual parameter of module out
Trang 132Signal REG: REG_TYPE;
BEGIN
P_REG: process (DATA, CLK, RESET)
Begin
REG <= REG_TYPE (others
End if;
End process;
P_FOUND: process (REG)
Variable CPT: NATURAL range 0 to ERROR_NUMBER +1;
Begin
CPT := 0;
For l in range loop
If PATTERN(l) /= REG(l) then
Trang 133BÀI 5: VHDL 127Trong các
Trang 134(STD.STANDARD)
Signal l1, l2, SUM_l: INTEGER range 16 to 15;
Signal N1, N2, SUM_N: INTEGER range 0 to 47;
SUM_l <= l1 + l2;
SUM_N <= N1 + N2;
1 bit -1)
Trang 136PORT (A, B : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
AeqB, AgtB, AltB :OUT STD_LOGIC);
END compare;
ARCHITECTURE behavior OF compare IS
BEGIN
WHEN WHEN WHEN END behavior;
Trang 137BÀI 5: VHDL 131
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY priority IS
PORT (w :IN STD_LOGIC_VECTOR(3 DOWNTO 0);
y :OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
END PROCESS;
Z <=0 WHEN w1 WHEN OTHERS;
END behavior;
có
En là ngõ vào cho phép
c
Trang 140LIBRARY IEEE;
USE ieee.std_logic_1164.all;
ENTITY regn IS
GENERIC ( N : INTEGER := 16);
Port ( D, clock : IN std_logic_vector (N-1 DOWNTO 0);
Reset, clock : IN std_logic;
Q : OUT std_logic_vector (N-1 DOWNTO 0);
Port ( Reset, Clock, En : IN std_logic;
Q : OUT std_logic_vector (3 DOWNTO 0);
END upcount;
ARCHITECTURE behavior OF upcount IS
SIGNAL Count : STD_LOGIC_VECTOR (3 DOWNTO 0);
BEGIN
PROCESS (Clock, Reset)
Trang 141BÀI 5: VHDL 135BEGIN
Trang 142architecture state_machine of divby5 is
type StateType is (state0, state1, state2, state3, state4); signal p_s, n_s : StateType;
Trang 144trúc
Câu 1:
trang web www.altera.com
Trang 150Cú pháp:
Reg
Input, Output, Inout:
Cú pháp:
Input [msb:lsb] port ngõ vào
Output [msb:lsb] port ngõ ra
Module sample (b, e, c, a);
Output
Trang 153BÀI 6: VERILOG 147f= a +c;
g= c n;
-3b001) = (3b111) và thì -1< 6
Trang 155BÀI 6: VERILOG 149Endmodule
Trang 156Assign
assign a = (g) ? x : y;
Assign a = ( inc = =2) ? a+1: a-1;
Tên [ ]
Trang 158Cú pháp:
Module tên module (danh sách port);
Input [msb:lsb] danh sách port ngõ vào;
Output [msb:lsb] danh sách port ngõ ra;
Inout [ msb:lsb ] danh sách port vào_ ra;
Endmodule
Module add_sub(add, in1, in2, out);
Input[7:0 ] in1, in2;
Wire in1, in2;
Output [7:0] out;
Reg out;
Endmodule
Trang 159BÀI 6: VERILOG 153
Cú pháp:
Module tên module (danh sách port);
Input [msb:lsb] danh sách port ngõ vào;
Output [msb:lsb] danh sách port ngõ ra;
Inout [ msb:lsb ] danh sách port vào_ ra;
Endmodule
Module add_sub(add, in1, in2, out);
Input[7:0 ] in1, in2;
Wire in1, in2;
Output [7:0] out;
Reg out;
Endmodule
Trang 161BÀI 6: VERILOG 155endmodule
// module instantiations
wire [3:0] in1, in2;
wire [3:0] o1, o2;
and4 C1(in1, in2,o1);
Trang 162intra_assignment delay:
Reg [6:0] sum; reg h, zilch;
Cú pháp:
Trang 164Cú pháp:
For
- begin
Trang 165BÀI 6: VERILOG 159K
Trang 169Reg [7:0] opr1, opr2;
Function[16:0] decode add(instr)
Input [31:0] instr;
Reg add_func;
Reg [7:0] opcode, opr1, opr2;
Trang 171BÀI 6: VERILOG 165always @(intruction) begin
{func, opr2, opr1}= decode_add (intruction);
Trang 172Else begin
End
ích rõ
6.12 M T S VÍ D :
// Khai báo module
Input
Output
Trang 173BÀI 6: VERILOG 167Reg
wire carry_out, carry_in;
wire[3:0] sum_out, ina, inb;
assign
{ carry_out, sum_out } = ina + inb + carry_in;
Endmodule
Trang 175BÀI 6: VERILOG 169input w0, w1;
Trang 177BÀI 6: VERILOG 171endcase
Trang 1781 Tocci, Digital Systems, Prentice Hall 1985
2
Minh
Trang 179BÀI 6: VERILOG 1734'b0110: led = 8'b10111110;
Trang 1801 Tocci, Digital Systems, Prentice Hall 1985
2
Minh