1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Báo cáo thí nghiệm kỹ thuật số full

37 100 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 1,47 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Thí nghiệm Kỹ thuật số của thầy Nguyễn Khắc Phương Tuấn THIẾT KẾ BỘ CỘNG 2 SỐ 4BIT, 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, Bộ Alu cộng trừ hai số bốn bit, Thiết kế bộ đếm thập phân các số có 2 chữ số. Mạch thực hiện đếm lên từ 00 đến 99 hoặc đếm xuống từ 99 về 00.

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA ĐIỆN – ĐIỆN TỬ

Trang 2

TP HỒ CHÍ MINH, THÁNG 12 NĂM 2019

Trang 3

MỤC LỤC

BÀI THÍ NGHIỆM 1 4

MỤC TIÊU: 4

TIẾN HÀNH THÍ NGHIỆM: 4

I THÍ NGHIỆM 1.1 TUTORIAL: 4

II THÍ NGHIỆM 1.2: 6

BÀI THÍ NGHIỆM 2 10

MỤC TIÊU: 10

TIẾN HÀNH THÍ NGHIỆM: 10

I THÍ NGHIỆM 2.1 THIẾT KẾ BỘ CỘNG 2 SỐ 4-BIT: 10

II THÍ NGHIỆM 2.2: 13

BÀI THÍ NGHIỆM 3 18

MỤC TIÊU: 18

TIẾN HÀNH THÍ NGHIỆM 18

I Thí nghiệm 3.1 – Bộ đếm mã BCD 18

II Thí nghiệm 3.2- Bộ đếm lên xuống thập phân từ 0-99 23

BÀI THÍ NGHIỆM 4 28

YÊU CẦU 28

TIẾN HÀNH THÍ NGHIỆM 29

Trang 4

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

Trang 7

b Sơ đồ mạch Logic (Logic Diagrams):

- Mô phỏng trên Proteus các cổng logic:

Trang 8

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

Trang 9

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;

Trang 10

e kết quả mô phỏng trên ModelSim/VWF:

f Kết quả thực hiện trên KIT DE2:

- Gán ngõ vào a_in và b_in vào SW[0] và SW[1], các ngõ ra vào LEDG[0]-[6]

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ángTắt Bật Sáng Tắt Sáng Sáng Tắt Sáng TắtBật Tắt Tắt Tắt Sáng Sáng Tắt Sáng TắtBật Bật Tắt Sáng Tắt Sáng Tắt Tắt Sáng

Trang 12

s : OUT STD_LOGIC_VECTOR(3 downto 0);

Cout : OUT STD_LOGIC);

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;

c Kết quả mô phỏng VWF:

Trang 13

d Kết quả mô phỏng trên kit DE2:

Input

Output

a[3] a[2] a[1] a[0] b[3] b[2] b[1] b[0] C_in C_ou

t s[3] s[2] s[1] s[0] SW

SW [3]

SW [2]

SW [1]

SW [0]

SW [8]

LED R [4]

LED R [3]

LEDR [2]

LED R [1]

LED R [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

Mô phỏng trên Proteus dùng 7483:

A( A1:LSB)

Trang 14

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 đượctrì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(B1:LSB)

Trang 15

Bảng 1 Các ngõ vào và ngõ ra của ALUSignal

Type

Signal Name

4-bit output result to be displayed on HEX0

Cout LEDG[0] 1-bit output result to be displayed on

LEDG[0]

Bảng 2 Tập lệnh của ALU

Control Instruction

Operation

000 Add Output <= A + B + Cin; Cout chứa số nhớ (carry)

001 Sub Output <= A – B – Cin; Cout chứa số mượn (borrow)

010 Or Output <= A or B

011 And Output <= A and B

100 Shl Output <= A(2 downto 0) & ’0’

101 Shr Output <= ‘0’ & A(3 downto 1)

110 Rol Output <= A(2 downto 0) & A(3)

111 Ror Output <= A(0) & A(3 downto 1)

Những điểm cần lưu ý:

 Sử dụng lệnh CASE (hoặc các câu lệnh thiết kế tương đương) kiểm tra ngõ vào “Code”

 để xác định phép toán cần thực hiện

Trang 16

 Với mạch tổ hợp, ngõ vào thay đổi sẽ làm ngõ ra thay đổi ngay lập tức.

 Có thể dùng các phép toán số học và logic trong thiết kế

 Mô phỏng thiết kế sử dụng lệnh “force” và “run” trong cửa sổ Transcript để thiết lập giá

 trị ngõ vào và quan sát giản đồ xung của ngõ ra ở cửa sổ Waveform

2 Thiết kế:

a Sơ đồ khối (Block Diagram):

b Sơ đồ mạch Logic (Logic Diagrams):

Trang 17

Control : in STD_LOGIC_VECTOR(2 downto 0);

ALU_OUT, s : out STD_LOGIC_VECTOR(3 downto 0);

C_out : out STD_LOGIC);

end ALU;

architecture model of ALU is

signal x, C_in_b: STD_LOGIC;

signal sum, sub1 : STD_LOGIC_VECTOR(4 downto 0);

signal ht : STD_LOGIC_VECTOR(3 downto 0);

signal C_in_a : STD_LOGIC_VECTOR(3 downto 0);

begin

ht<= “0001”;

sum <= ('0'& A ) + B + C_in When Control = "000";

sub1 <= ('0'& A ) + (not('0'& B ))+ ht + (not("0000"& C_in)) +ht when Control = "001";

x<='0';

C_out <= sum(4) when Control = "000" else

sub1(4) when Control="001" else

x when Control="010" else

x when Control="011" else

x when Control="100" else

x when Control="101" else

Trang 18

x when Control="110" else

x when Control="111";

with Control select

ALU_OUT <= sum(3 downto 0) when "000",

sub1(3 downto 0) when "001",

A or B when "010",

A and B when "011",A(2 downto 0) & '0' when "100",'0' & A(3 downto 1) when "101",A(2 downto 0) & A(3) when "110",A(0) & A(3 downto 1) when "111";

end model;

4 Kết quả mô phỏng trên VWF:

Trang 19

5 Kết quả mô phỏng trên kit DE2:

STT

Input

A[3] A[2] A[1] A[0] B[3] B[2] B[1] B[0] C_in

Control [2]

Control [1]

Con trol[ 0] SW

[7]

SW [6]

SW [5]

SW [4]

SW [3]

SW [2]

SW [1]

SW [0]

SW [8]

SW [9]

SW [10]

SW [11]

ALU_OUT[0]

LEDR

[4]

LEDR [3]

LEDR [2]

LEDR [1] LEDR

Trang 21

Trạng thái ngõ ra thay đổi khi ngõ vào CLK xuất hiện cạnh lên.

Khi ngõ vào bất đồng bộ CLR = 0, bộ đếm bị reset

Chọn chu kỳ của tín hiệu CLK là 10ns khi mô phỏng thiết kế

LOAD ENABLE UP

1 1 X Bộ đếm nạp giá trị từ ngõ vào D

Trang 22

0 1 1 Mạch thực hiện đếm lên Nếu giá trị của bộ đếm là

9, Carry output (CO) = 1

0 1 0 Mạch thực hiện đếm xuống Nếu giá trị của bộ đếm

là 0, Carry output (CO) = 1

Bảng 3 Các ngõ vào, ngõ ra của bộ đếm mã BCD

Signal

Type

Signal Name Assigned Port Comment

Inputs D SW[3 0] 4-bit input to be displayed on HEX6

ENABLE SW[4] 1-bit input to be displayed on LEDR[0]LOAD SW[5] 1-bit input to be displayed on LEDR[1]

UP SW[6] 1-bit input to be displayed on LEDR[2]CLR SW[7] 1-bit input to be displayed on LEDR[3]Outputs Q HEX0 4-bit output result to be displayed on

HEX0Cout LEDG[0] 1-bit output result to be displayed on

LEDG[0]

2 Thiết kế:

3 Sơ đồ khối (Block Diagram):

4 VHDL code

Trang 23

port (clk1,rst1,enable,load,up: in std_logic;

Q1: out std_logic_vector(3 downto 0);

variable temp1: std_logic_vector(3 downto 0);

variable c_out: std_logic_vector(3 downto 0);

Trang 27

II Thí nghiệm 3.2- Bộ đếm lên xuống thập phân từ 0-99

Trang 28

port (clk,rst1,enable,load,up: in std_logic;

Q1,Q2: out std_logic_vector(6 downto 0);

port (clkin,rst: in std_logic;

clock_out: out std_logic);

end component;

begin

user1: clk_devider port map(clk,rst1,clk1);

process(clk1,rst1,load,enable,up)

variable temp1: std_logic_vector(3 downto 0);

variable temp2: std_logic_vector(3 downto 0);

Trang 29

variable c_out: std_logic_vector(3 downto 0);

Trang 31

4 Sơ đồ khối.

Trang 33

TIẾN HÀNH THÍ NGHIỆM

1.Sơ đồ khối.

2

Sơ đồ mạch logic.

Trang 34

weight: in std_logic_vector(11 downto 0);

Grp1,Grp2,Grp3,Grp4,Grp5,Grp6:out std_logic_vector(7 downto 0);

currentGrp:inout std_logic_vector(2 downto 0));

end sorter;

architecture behavioral of sorter is

begin

currentGrp <= "000" when weight = "000000000000" else

"001" when weight > "000000000000" and weight < "000011001001" else "010" when weight > "000011001000" and weight < "000111110101" else "011" when weight > "000111110100" and weight < "001100100001" else "100" when weight > "001100100000" and weight < "001111101001" else "101" when weight > "001111101000" and weight < "011111010001" else "110" when weight > "011111010000";

process (clk)

Trang 35

variable c1,c2,c3,c4,c5,c6: std_logic_vector(7 downto 0);

variable tmp: std_logic_vector(2 downto 0);

Trang 37

1

Ngày đăng: 28/10/2020, 14:56

HÌNH ẢNH LIÊN QUAN

c. Bảng chân trị: Inputs Outputs a_i nb_inNot_op(a_in) - Báo cáo thí nghiệm kỹ thuật số full
c. Bảng chân trị: Inputs Outputs a_i nb_inNot_op(a_in) (Trang 8)
Bảng 1 Các ngõ vào và ngõ ra của ALU Signal  - Báo cáo thí nghiệm kỹ thuật số full
Bảng 1 Các ngõ vào và ngõ ra của ALU Signal (Trang 15)
Bảng 3 Các ngõ vào, ngõ ra của bộ đếm mã BCD Signal - Báo cáo thí nghiệm kỹ thuật số full
Bảng 3 Các ngõ vào, ngõ ra của bộ đếm mã BCD Signal (Trang 22)
3 Sơ đồ khối (Block Diagram): - Báo cáo thí nghiệm kỹ thuật số full
3 Sơ đồ khối (Block Diagram): (Trang 22)

TỪ KHÓA LIÊN QUAN

w