Professional Documents
Culture Documents
MỤC TIÊU:
Sinh viên cần tìm hiểu về KIT DE2, các sử dụng công cụ Quartus, và cách cài đặt chương
trình trên KIT Altera DE2 FPGA dùng Programmer.
Sinh viên đọc phần III của bài thí nghiệm 0 và thực hiện chương trình Test01 theo từng
bước đã được đưa ra.
Giáo viên hướng dẫn sẽ kiểm tra kết quả thực hiện của sinh viên thông qua kết quả mô
phỏng.
Các bước thực hiện:
Step 1: Trên thanh menu chọn File/New Project Wizard để bắt đầu quá trình tạo project.
Step 2: Đặt tên project và thiết lập đường dẫn đến thư mục làm việc của project.
Step 3: Add Files
Step 4: Chọn device cho project muốn thiết kế
Step 5: Tạo file thiết kế cho project.
Step 6: Viết code chương trình cho thiết kế bằng ngôn ngữ VHDL
Step 7: Tiến hành gán pin cho thiết kế bằng cách import Assignments
Step 8: Tiến hành biên dịch chương trình
1. Code VHDL:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity test01 is
port (
SW : in std_logic_vector (1 downto 0);
LEDR : out std_logic_vector (1 downto 0));
end entity;
architecture behavior of test01 is
begin
LEDR (1 downto 0) <= SW (1 downto 0);
end architecture;
2. Công cụ RTL Viewer:
3. Mô phỏng:
Inputs Outputs
a_in b_in Not_op And_op Nand_op Or_op Nor_op Xor_op Xnor_op
(a_in)
0 0 1 0 1 0 1 0 1
0 1 1 0 1 1 0 1 0
1 0 0 0 1 1 0 1 0
1 1 0 1 0 1 0 0 1
d. VHDL code:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity gates is
port (a_in,b_in: in std_logic;
not_op,and_op,nand_op,or_op,nor_op,xor_op,xnor_op: out std_logic);
end gates;
architecture dataflow of gates is
begin
not_op <= not a_in;
and_op <= a_in and b_in;
nand_op <= a_in nand b_in;
or_op <= a_in or b_in;
nor_op <= a_in nor b_in;
xor_op <= a_in xor b_in;
xnor_op <= a_in xnor b_in;
end dataflow;
e. kết quả mô phỏng trên ModelSim/VWF:
Input Output
SW[0] SW[1] LEDG[0] LEDG[1] LEDG[2] LEDG[3] LEDG[4] LEDG[5] LEDG[6]
Tắt Tắt Sáng Tắt Sáng Tắt Sáng Tắt Sáng
Tắt Bật Sáng Tắt Sáng Sáng Tắt Sáng Tắt
Bật Tắt Tắt Tắt Sáng Sáng Tắt Sáng Tắt
Bật Bật Tắt Sáng Tắt Sáng Tắt Tắt Sáng
BÀI THÍ NGHIỆM 2
MỤC TIÊU:
Nắm được phương pháp thiết kế mạch tổ hợp cơ bản bằng ngôn ngữ VHDL và thực hiện
trên kit FPGA.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
ENTITY adder4 IS
PORT ( Cin : IN STD_LOGIC;
a, b : IN STD_LOGIC_VECTOR(3 downto 0);
s : OUT STD_LOGIC_VECTOR(3 downto 0);
Cout : OUT STD_LOGIC);
END adder4;
ARCHITECTURE model OF adder4 IS
SIGNAL c : STD_LOGIC_VECTOR(1 to 3);
COMPONENT fulladder
PORT ( x , y , z : IN STD_LOGIC;
s , c : OUT STD_LOGIC);
END COMPONENT;
BEGIN
stage0: fulladder PORT MAP(a(0),b(0),Cin,s(0),c(1)) ;
stage1: fulladder PORT MAP(a(1),b(1),c(1),s(1),c(2)) ;
stage2: fulladder PORT MAP(a(2),b(2),c(2),s(2),c(3)) ;
stage3: fulladder PORT MAP(a(3),b(3),c(3),s(3),Cout) ;
END model;
Input
Output
a[3] a[2] a[1] a[0] b[3] b[2] b[1] b[0] C_in C_out s[3] s[2] s[1]
s[0]
LED LED LED LED
SW SW SW SW SW SW SW SW SW LEDR
R R R R
[7] [6] [5] [4] [3] [2] [1] [0] [8] [2]
[4] [3] [1] [0]
Tắt Tắt Tắt Bật Tắt Tắt Tắt Tắt Tắt Tắt Tắt Tắt Tắt Sáng
Tắt Tắt Tắt Bật Tắt Tắt Tắt Bật Tắt Tắt Tắt Tắt Sáng Tắt
Bật Bật Bật Bật Tắt Tắt Tắt Bật Tắt Bật Tắt Tắt Tắt Tắt
Bật Bật Bật Bật Tắt Tắt Bật Bật Tắt Bật Tắt Tắt Sáng Tắt
Bật Bật Bật Bật Bật Bật Bật Bật Tắt Bật Sáng Sáng Sáng Tắt
A( A1:LSB)
II. THÍ NGHIỆM 2.2:
1. Yêu cầu:
Thiết kế bộ ALU (Arithmetic and Logic Unit) thực hiện 8 hàm tính toán số học và
logic đơn giản. Mã điều khiển và mô tả các phép toán tương ứng với các mã ấy được
trình bày trong Bảng 1.
Bộ ALU 4-bit có các ngõ vào sau:
A, B: 4-bit input
Cin: 1-bit input
Output: 4-bit output
Cout: 1-bit output
Control: 3-bit control input
Bảng 1 Các ngõ vào và ngõ ra của ALU
Signal Signal Assigned
Type Name Port Comment
A SW[3..0]
4-bit input to be displayed on HEX6
Input B SW[7..4]
4-bit input to be displayed on HEX4
Cin SW[8]
1-bit input to be displayed on LEDR[0]
Control SW[17..15]
2-bit input to be displayed on LEDR[17..16]
ALU_out HEX0
4-bit output result to be displayed on HEX0
Output
Cout LEDG[0] 1-bit output result to be displayed on
LEDG[0]
2. Thiết kế:
a. Sơ đồ khối (Block Diagram):
);
End entity;
Architecture Behavioral of Alu is
signal Result: std_logic_vector(3 downto 0);
signal v1: std_logic_vector(3 downto 0);
signal v2: std_logic_vector(3 downto 0);
signal v3: std_logic_vector(3 downto 0);
signal v4: std_logic_vector(3 downto 0);
signal v5: std_logic_vector(3 downto 0);
signal v6: std_logic_vector(3 downto 0);
signal v7: std_logic_vector(3 downto 0);
signal v8: std_logic_vector(3 downto 0);
signal vout1: std_logic;
signal vout2: std_logic;
Component Sub4 is
Port(
Cin : IN STD_LOGIC;
a, b : IN STD_LOGIC_VECTOR(3 downto 0);
s : OUT STD_LOGIC_VECTOR(3 downto 0);
Cout : OUT STD_LOGIC
);
End Component;
Component Full_Adder is
Port (
Cin : IN STD_LOGIC;
a, b : IN STD_LOGIC_VECTOR(3 downto 0);
s: OUT STD_LOGIC_VECTOR(3 downto 0);
Cout : OUT STD_LOGIC
);
End component;
Component Mux8to1 is
Port ( sel: in std_logic_vector(2 downto 0);
d1, d2, d3, d4, d5, d6, d7, d8: in std_logic_vector(3
downto 0);
Result :out std_logic_vector(3 downto 0) );
End component;
Component Shl is
Port (
a: in std_logic_vector(3 downto 0);
b: out std_logic_vector( 3 downto 0)
);
End component;
Component Shr is
Port (
a: in std_logic_vector(3 downto 0);
b: out std_logic_vector( 3 downto 0)
);
End component;
Component Roll is
Port (
a: in std_logic_vector(3 downto 0);
b: out std_logic_vector( 3 downto 0)
);
End component;
Component Rorr is
Port (
a: in std_logic_vector(3 downto 0);
b: out std_logic_vector( 3 downto 0)
);
End component;
Component Sel_vout is
Port (
Sel: in std_logic_vector(2 downto 0);
a: in std_logic;
b: in std_logic;
rel: out std_logic
);
End component;
Component Or_gate is
Port (
a: in std_logic_vector(3 downto 0);
b: in std_logic_vector(3 downto 0);
Re: out std_logic_vector( 3 downto 0)
);
End component;
Component And_gate is
Port (
a: in std_logic_vector(3 downto 0);
b: in std_logic_vector(3 downto 0);
Re: out std_logic_vector( 3 downto 0)
);
End component;
Component BCDto7seg is
Port (
bcd: in std_logic_vector(3 downto 0);
Seg: out std_logic_vector(6 downto 0)
);
End component;
Begin
Sel_out <= sel;
Stage0: BCDto7seg port map(a_in,Seg_ain);
Stage1: BCDto7seg port map(b_in,Seg_bin);
Satge2: Full_Adder port map(Cin, a_in ,b_in, v1,vout1);
Stage3: Sub4 port map(Cin, a_in, b_in, v2, vout2);
Stage4: Or_gate port map(a_in,b_in,v3);
Stage5: And_gate port map(a_in,b_in,v4);
Stage6: Shl port map(a_in,v5);
Stage7: Shr port map(a_in,v6);
Stage8: Roll port map(a_in,v7);
Stage9: Rorr port map(a_in,v8);
Stage10:Sel_vout port map(sel,vout1,vout2,Cout)
Stage11:Mux8to1 portmap(sel,v1,v2,v3,v4,v5,v6,v7,v8,Result);
Stage12:BCDto7seg portmap(Result,Seg_Result);
end Behavioral;
4. Kết quả mô phỏng trên VWF:
Input
Control Control Con
STT A[3] A[2] A[1] A[0] B[3] B[2] B[1] B[0] C_in [2] [1] trol[
0]
SW SW SW SW SW SW SW SW SW SW SW SW
[7] [6] [5] [4] [3] [2] [1] [0] [8] [9] [10] [11]
1 Bật Bật Bật Bật Bật Bật Bật Bật Tắt Tắt Tắt Tắt
2 Tắt Tắt Tắt Bật Tắt Tắt Bật Bật Bật Tắt Tắt Bật
3 Bật Bật Tắt Tắt Bật Tắt Bật Tắt X Tắt Bật Tắt
4 Bật Bật Tắt Tắt Bật Tắt Bật Tắt X Tắt Bật Bật
5 Bật Bật Tắt Bật Bật Bật Bật Bật X Bật Tắt Tắt
6 Bật Tắt Bật Bật X X X X X Bật Tắt Tắt
7 Tắt Bật Bật Bật X X X X X Bật Bật Tắt
8 Tắt Tắt Tắt Bật X X X X X Bật Bật Bật
Output
C_out ALU_OUT[3] ALU_OUT[2] ALU_OUT[1]
STT ALU_OUT[0]
Bộ Alu cộng trừ hai số bốn bit: mô phỏng trên proteus với ngõ điều khiển S0,
S0=0 thực hiện A+B
S0=1 thực hiên A-B