1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Thí nghiệm thiết kế luận lý (co1026) tuần 2 mạch logic tổ hợp

11 2 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Thí Nghiệm Thiết Kế Luận Lý (CO1026) Tuần 2: Mạch Logic Tổ Hợp
Tác giả Huỳnh Phúc Nghị, Lê Văn Tuấn Kiệt, Trần Hải Thảo Quảng, Nguyễn Trường Giang, Nguyễn Trần Đăng Khoa, Hà Minh Nguyên
Người hướng dẫn Giảng viên
Trường học Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Khoa Khoa học & Kỹ thuật Máy tính
Thể loại báo cáo
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 11
Dung lượng 1,25 MB

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

Nội dung

2 1.2 Viết mã Verilog HDL RTL và testbench.. 3 2.2 Viết mã Verilog HDL và testbench.. 5 3.2 Viết mã Verilog HDL và testbench.. 7 4.2 Viết mã verilog HDL RTL và testbench cho thiết kế...

Trang 1

THÍ NGHIỆM THIẾT KẾ LUẬN LÝ (CO1026)

TUẦN 2: Mạch logic tổ hợp

Lớp L04 - Nhóm 3

TP Hồ Chí Minh, Tháng 3/2023

Trang 2

Mục lục

1.1 Đề bài 2 1.2 Viết mã Verilog HDL RTL và testbench 2 1.3 Mô phỏng trên Arty-Z7 3

2.1 Đề bài 3 2.2 Viết mã Verilog HDL và testbench 3 2.3 Mô phỏng trên Arty-Z7 4

3.1 Đề bài 5 3.2 Viết mã Verilog HDL và testbench 5 3.3 Mô phỏng trên Arty-Z7 7

4.1 Đề bài 7 4.2 Viết mã verilog HDL RTL và testbench cho thiết kế 8 4.3 Mô phỏng trên Arty-Z7 10

Trang 3

1 Exercise 1:

Thiết kế một mạch có một đầu vào 4 bit và một đầu ra 4 bit với các chức năng như sau (tất cả các đầu

ra đều ở mức cao):

• Đầu ra 0: hoạt động khi có số chẵn bit 1 trong đầu vào.

• Đầu ra 1: tích cực khi chỉ có 1 bit 1 ở đầu vào.

• Đầu ra 2: tích cực khi không có bit 1 ở đầu vào.

• Đầu ra 3: hoạt động khi tất cả các bit trong đầu vào là 1.

Ta có mã verilog HDL RTL cho thiết kế:

1 m o d u l e e x e r c i s e 1 (

2 o u t p u t reg [ 3 : 0 ] out ,

3 i n p u t [ 3 : 0 ] in

4 ) ;

5 a l w a y s @ ( in )

6 b e g i n

9

10 if ( in == 4 ’ b 1 0 0 0 || in == 4 ’ b 0 1 0 0 || in == 4 ’ b 0 0 1 0 || in == 4 ’ b 0 0 0 1 )

12 e l s e

14

15 if (~| in == 1 ’ b1 ) out [2] <= 1 ’ b1 ;

16 e l s e out [2] <= ~1 ’ b1 ;

17

18 if (& in == 1 ’ b1 ) out [3] <= 1 ’ b1 ;

19 e l s e out [3] <= ~1 ’ b1 ;

20 end

21 e n d m o d u l e

Ta có testbench mô phỏng thiết kế:

1 ‘ t i m e s c a l e 1 ns / 1 ps

2 m o d u l e w e e k 2 _ 1 _ t b ;

3 reg [ 3 : 0 ] in ;

4 w i r e [ 3 : 0 ] out ;

5

6 w e e k 2 _ 1 t e s t ( in ( in ) , out ( out ) ) ;

7

8 i n i t i a l b e g i n

9 $ m o n i t o r(" % t : in : % b , out : % b ", $time , in , out ) ;

10 end

11

12 i n i t i a l b e g i n

13 in <= 4 ’ b 0 0 0 0 ;

14 #10 in <= 4 ’ b 0 0 0 1 ;

15 #10 in <= 4 ’ b 0 0 1 0 ;

16 #10 in <= 4 ’ b 0 0 1 1 ;

17 #10 in <= 4 ’ b 0 1 0 0 ;

18 #10 in <= 4 ’ b 0 1 0 1 ;

19 #10 in <= 4 ’ b 0 1 1 0 ;

20 #10 in <= 4 ’ b 0 1 1 1 ;

21 #10 in <= 4 ’ b 1 0 0 0 ;

22 #10 in <= 4 ’ b 1 0 0 1 ;

23 #10 in <= 4 ’ b 1 0 1 0 ;

24 #10 in <= 4 ’ b 1 0 1 1 ;

25 #10 in <= 4 ’ b 1 1 0 0 ;

26 #10 in <= 4 ’ b 1 1 0 1 ;

27 #10 in <= 4 ’ b 1 1 1 0 ;

28 #10 in <= 4 ’ b 1 1 1 1 ;

29 #10 $ s t o p ;

30 end

Trang 4

32

33 e n d m o d u l e

Ta có kết quả in ra (sử dụng monitor):

Hình 1: Kết quả in ra

Sau khi chạy simulation ta được kết quả như sau:

Hình 2: Kết quả mô phỏng mạch

Clip mô phỏng trên Arty-Z7 board

Thiết kế mạch tạo tín hiệu đầu ra 1 Hz bằng mô hình cấu trúc Tín hiệu này kết nối với LED trên Bo mạch FPGA Arty-Z7 để nhấp nháy (bật 0.5s - tắt 0.5s) Biết rằng tần số xung nhịp đầu vào là 125 MHz

và FlipFlop có thể bao gồm từ thư viện Vivado.

Ta có mã verilog HDL RTL cho thiết kế:

1 m o d u l e f r e q _ d i v i d e r (

2 i n p u t clk , reset ,

3 o u t p u t reg led

4 ) ;

5 p a r a m e t e r d i v i s o r = 125 _ 0 0 0 _ 0 0 0 ; // 27 D f l i p f l o p

Trang 5

6 p a r a m e t e r m = d i v i s o r /2;

7 i n t e g e r c o u n t ;

8

9 a l w a y s @ (p o s e d g e reset , n e g e d g e clk )

10 b e g i n

11 if ( r e s e t == 1)

12 b e g i n

16 e l s e

17 b e g i n

23 e l s e c o u n t <= c o u n t + 1;

25 end

26 e n d m o d u l e

Ta có testbench mô phỏng thiết kế, bởi vì chia tần số cho 125.000.000 là một con số quá lớn để có thể quan sát trển biểu đồ dạng sóng, nhóm mô phỏng với mạch chia tần số cho 10:

1 ‘ t i m e s c a l e 1 ns / 0 0 1 ns

2 m o d u l e t e s t _ f r e q _ d i v i d e r ;

3 reg clk , r e s e t ;

4 w i r e led ;

5

6 f r e q _ d i v i d e r #( d i v i s o r ( 1 0 ) ) div ( clk , reset , led ) ;

7

8 i n i t i a l

9 b e g i n

12 r e s e t = # 0 1 0;

13 end

14

15 a l w a y s clk = # 0 1 ~ clk ;

16

17 i n i t i a l

18 b e g i n

19 $ m o n i t o r (" led = % b ", led ) ;

20 # 1 0 0 $ f i n i s h;

21 end

22 e n d m o d u l e

Sau khi simulation ta được kết quả như sau:

Hình 3: Kết quả mô phỏng mạch

Clip mô phỏng trên Arty-Z7 board

Trang 6

3 Exercise 3:

Thiết kế bộ giải mã LED 7 đoạn sẽ chấp nhận đầu vào 4 bit và tạo đầu ra 7 bit.

• Tên module: bin2led7(enable, bin in, led out);

• Tín hiệu enable điều khiển đèn LED Nếu enable = 0, đèn LED sẽ tắt.

• Bin_in là tín hiệu đầu vào nhị phân 4 bit.

• Led_out là tín hiệu ra 7 bit cho LED 7 thanh hiển thị.

Hình 4: LED 7 đoạn

Hình 5: Mạch led 7 đoạn anode chung

Ta có mã verilog HDL cho thiết kế:

1 m o d u l e b i n 2 l e d 7 ( enable , bin_in , l e d _ o u t ) ;

2 i n p u t e n a b l e ;

3 i n p u t [ 3 : 0 ] b i n _ i n ;

4 o u t p u t reg [ 6 : 0 ] l e d _ o u t ;

5

6 a l w a y s @ ( enable , b i n _ i n )

7 b e g i n

8 if ( e n a b l e == 1 ’ b0 ) l e d _ o u t <= 7 ’ b 1 1 1 1 1 1 1 ;

Trang 7

9 e l s e

10 c a s e ( b i n _ i n )

11 0: l e d _ o u t <= ~7 ’ b 1 1 1 1 1 1 0 ;

12 1: l e d _ o u t <= ~7 ’ b 0 1 1 0 0 0 0 ;

13 2: l e d _ o u t <= ~7 ’ b 1 1 0 1 1 0 1 ;

14 3: l e d _ o u t <= ~7 ’ b 1 1 1 1 0 0 1 ;

15 4: l e d _ o u t <= ~7 ’ b 0 1 1 0 0 1 1 ;

16 5: l e d _ o u t <= ~7 ’ b 1 0 1 1 0 1 1 ;

17 6: l e d _ o u t <= ~7 ’ b 1 0 1 1 1 1 1 ;

18 7: l e d _ o u t <= ~7 ’ b 1 1 1 0 0 0 0 ;

19 8: l e d _ o u t <= ~7 ’ b 1 1 1 1 1 1 1 ;

20 9: l e d _ o u t <= ~7 ’ b 1 1 1 1 0 1 1 ;

21 d e f a u l t: l e d _ o u t <= 7 ’ b 1 1 1 1 _ 1 1 1 ;

22 e n d c a s e

23 end

24 e n d m o d u l e

Ta có testbench mô phỏng thiết kế:

1 ‘ t i m e s c a l e 1 ns / 1 ps

2 m o d u l e b i n 2 l e d 7 _ t b ;

3 reg e n a b l e ;

4 reg [ 3 : 0 ] b i n _ i n ;

5 w i r e [ 6 : 0 ] l e d _ o u t ;

6 b i n 2 l e d 7 t e s t ( e n a b l e ( e n a b l e ) , b i n _ i n ( b i n _ i n ) , l e d _ o u t ( l e d _ o u t ) ) ;

7 i n i t i a l b e g i n

8 $ m o n i t o r(" % t : e n a b l e : % b , b i n _ i n : % b , l e d _ o u t : % b , ( % d ) ", $time , enable , bin_in , l ed _ ou t , b i n _ i n ) ;

9 end

10 i n i t i a l b e g i n

11 { enable , b i n _ i n } <= 5 ’ b 0 _ 0 0 0 0 ;

12 #10 { enable , b i n _ i n } <= 5 ’ b 0 _ 0 0 0 1 ;

13 #10 { enable , b i n _ i n } <= 5 ’ b 0 _ 0 0 1 0 ;

14 #10 { enable , b i n _ i n } <= 5 ’ b 0 _ 0 0 1 1 ;

15 #10 { enable , b i n _ i n } <= 5 ’ b 0 _ 0 1 0 0 ;

16 #10 { enable , b i n _ i n } <= 5 ’ b 0 _ 0 1 0 1 ;

17 #10 { enable , b i n _ i n } <= 5 ’ b 0 _ 0 1 1 0 ;

18 #10 { enable , b i n _ i n } <= 5 ’ b 0 _ 0 1 1 1 ;

19 #10 { enable , b i n _ i n } <= 5 ’ b 0 _ 1 0 0 0 ;

20 #10 { enable , b i n _ i n } <= 5 ’ b 0 _ 1 0 0 1 ;

21 #10 { enable , b i n _ i n } <= 5 ’ b 1 _ 0 0 0 0 ;

22 #10 { enable , b i n _ i n } <= 5 ’ b 1 _ 0 0 0 1 ;

23 #10 { enable , b i n _ i n } <= 5 ’ b 1 _ 0 0 1 0 ;

24 #10 { enable , b i n _ i n } <= 5 ’ b 1 _ 0 0 1 1 ;

25 #10 { enable , b i n _ i n } <= 5 ’ b 1 _ 0 1 0 0 ;

26 #10 { enable , b i n _ i n } <= 5 ’ b 1 _ 0 1 0 1 ;

27 #10 { enable , b i n _ i n } <= 5 ’ b 1 _ 0 1 1 0 ;

28 #10 { enable , b i n _ i n } <= 5 ’ b 1 _ 0 1 1 1 ;

29 #10 { enable , b i n _ i n } <= 5 ’ b 1 _ 1 0 0 0 ;

30 #10 { enable , b i n _ i n } <= 5 ’ b 1 _ 1 0 0 1 ;

31 #10 $ s t o p ;

32 end

33 e n d m o d u l e

Ta có kết quả in ra (sử dụng monitor):

Trang 8

Hình 6: Kết quả in ra

Sau khi chạy simulation ta được kết quả như sau:

Hình 7: Kết quả mô phỏng mạch

Clip mô phỏng trên Arty-Z7 board

Thiết kế mạch điều khiển các LED RGB trên board Arty-Z7 như sau:

• Công tắc 0: chọn chế độ hiển thị - 1 LED hoặc 2 LED.

• Công tắc 1:

– để chọn đèn LED trái hoặc phải ở chế độ hiển thị 1 đèn LED.

– để chọn mã màu như bảng bên dưới.

• Các nút: chọn màu.

Trang 9

Hình 8: Bảng mã màu

Ta có mã verilog HDL RTL cho thiết kế:

1 m o d u l e ex4 (

2 i n p u t [ 3 : 0 ] b u tt on s ,

3 i n p u t sw0 , sw1 ,

4 o u t p u t reg [ 2 : 0 ] l e d 1 , l e d 2

5 ) ;

6 // 0: b l u e 1: g r e e n 2: red

7 a l w a y s @ ( b ut to n s , sw0 , sw1 ) b e g i n

8 if( sw0 = = 1 ) b e g i n

10 c a s e( b u t t o n s )

31 d e f a u l t: b e g i n

37 e l s e b e g i n

38 c a s e( b u t t o n s )

Trang 10

50 end

55 d e f a u l t: b e g i n

62 e l s e b e g i n

66 c a s e( b u t t o n s )

72 d e f a u l t: l e d 1 <= 3 ’ b 0 0 0 ;

78 c a s e( b u t t o n s )

84 d e f a u l t: l e d 2 <= 3 ’ b 0 0 0 ;

89 e n d m o d u l e

Ta có testbench mô phỏng thiết kế:

1 ‘ t i m e s c a l e 1 ns / 1 ns

2

3 m o d u l e e x 4 _ t b ;

4 reg [ 3 : 0 ] b u t t o n s ;

5 reg sw0 , sw1 ;

6 w i r e [ 2 : 0 ] led1 , l e d 2 ;

7 ex4 tb ( b u t t o n s ( b u t t o n s ) , sw0 ( sw0 ) , sw1 ( sw1 ) , l e d 1 ( l e d 1 ) , l e d 2 ( l e d 2 ) ) ;

8 i n i t i a l b e g i n

9 $ m o n i t o r(" t i m e % t : b u t t o n s = % b , sw0 = % b , sw1 = % b , l e d 1 = % b , l e d 2 = % b \ n

", $time , b ut t on s , sw0 , sw1 , led1 , l e d 2 ) ;

11 i n i t i a l b e g i n

12 { bu t to n s , sw0 , sw1 } <= 6 ’ b 0 0 0 1 _ 1 _ 0 ;

13 #10 { b u tt o ns , sw0 , sw1 } <= 6 ’ b 0 0 1 0 _ 1 _ 0 ;

14 #10 { b u tt o ns , sw0 , sw1 } <= 6 ’ b 0 1 0 0 _ 1 _ 0 ;

15 #10 { b u tt o ns , sw0 , sw1 } <= 6 ’ b 1 0 0 0 _ 1 _ 0 ;

16 #10 { b u tt o ns , sw0 , sw1 } <= 6 ’ b 0 0 0 0 _ 1 _ 0 ;

17 #10 { b u tt o ns , sw0 , sw1 } <= 6 ’ b 0 0 0 1 _ 0 _ 0 ;

18 #10 { b u tt o ns , sw0 , sw1 } <= 6 ’ b 0 0 1 0 _ 0 _ 0 ;

19 #10 { b u tt o ns , sw0 , sw1 } <= 6 ’ b 0 1 0 0 _ 0 _ 0 ;

20 #10 { b u tt o ns , sw0 , sw1 } <= 6 ’ b 1 0 0 0 _ 0 _ 0 ;

21 #10 { b u tt o ns , sw0 , sw1 } <= 6 ’ b 0 0 0 0 _ 0 _ 0 ;

22 #10 { b u tt o ns , sw0 , sw1 } <= 6 ’ b 0 0 0 0 _ 1 _ 1 ;

23 #10 { b u tt o ns , sw0 , sw1 } <= 6 ’ b 0 0 0 1 _ 1 _ 1 ;

24 #10 { b u tt o ns , sw0 , sw1 } <= 6 ’ b 0 0 1 0 _ 1 _ 1 ;

25 #10 { b u tt o ns , sw0 , sw1 } <= 6 ’ b 0 1 0 0 _ 1 _ 1 ;

26 #10 { b u tt o ns , sw0 , sw1 } <= 6 ’ b 1 0 0 0 _ 1 _ 1 ;

27 #10 $ s t o p ;

Trang 11

29 e n d m o d u l e

Ta có kết quả in ra (sử dụng minitor):

Hình 9: Kết quả in ra

Sau khi chạy simulation ta được kết quả như sau:

Hình 10: Kết quả mô phỏng mạch

Clip mô phỏng trên Arty-Z7 board

Ngày đăng: 14/12/2024, 15:40

HÌNH ẢNH LIÊN QUAN

Hình 1: Kết quả in ra Sau khi chạy simulation ta được kết quả như sau: - Thí nghiệm thiết kế luận lý (co1026) tuần 2 mạch logic tổ hợp
Hình 1 Kết quả in ra Sau khi chạy simulation ta được kết quả như sau: (Trang 4)
Hình 3: Kết quả mô phỏng mạch - Thí nghiệm thiết kế luận lý (co1026) tuần 2 mạch logic tổ hợp
Hình 3 Kết quả mô phỏng mạch (Trang 5)
Hình 4: LED 7 đoạn - Thí nghiệm thiết kế luận lý (co1026) tuần 2 mạch logic tổ hợp
Hình 4 LED 7 đoạn (Trang 6)
Hình 6: Kết quả in ra Sau khi chạy simulation ta được kết quả như sau: - Thí nghiệm thiết kế luận lý (co1026) tuần 2 mạch logic tổ hợp
Hình 6 Kết quả in ra Sau khi chạy simulation ta được kết quả như sau: (Trang 8)
Hình 7: Kết quả mô phỏng mạch - Thí nghiệm thiết kế luận lý (co1026) tuần 2 mạch logic tổ hợp
Hình 7 Kết quả mô phỏng mạch (Trang 8)
Hình 8: Bảng mã màu - Thí nghiệm thiết kế luận lý (co1026) tuần 2 mạch logic tổ hợp
Hình 8 Bảng mã màu (Trang 9)
Hình 9: Kết quả in ra Sau khi chạy simulation ta được kết quả như sau: - Thí nghiệm thiết kế luận lý (co1026) tuần 2 mạch logic tổ hợp
Hình 9 Kết quả in ra Sau khi chạy simulation ta được kết quả như sau: (Trang 11)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w