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

Báo cáo môn thiết kế logic số20

20 5 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 20
Dung lượng 1,03 MB

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

Nội dung

Viết chương trình mô tả máy bán hàng tự động sẽ thả kẹo sau khi nhận được 15 xu.. Viết chương trình mô tả mạch đếm tần số và hiển thị kết quả trên LED 7 đoạn 4.. Bài 2 Viết chương trình

Trang 1

� HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

BÁO CÁO BÀI TẬP LỚN

Thiết kế logic số

Giảng viên: Trần Thu Hà

Nhóm lớp : 02 Nhóm bài tập :19 Sinh viên: Trần Long Thành: B18DCDT236 Nguyễn Kính Đảm: B18DCDT039 Trịnh Đức Tiệp: B18DCDT215

Trang 2

Mục lục

Trang 3

Thiết kế logic số

Đề bài nhóm 19

1 Viết chương trình mô tả mạch tạo mã chẵn/lẻ 7 bit

2 Viết chương trình mô tả máy bán hàng tự động sẽ thả kẹo sau khi nhận được 15 xu Máy có một khe nhận tiền xu gồm đồng 5 xu và 10 xu, mỗi lần nhận một xu Nếu đưa vào nhiều hơn 15 xu, máy sẽ trả lại tiền thừa Sau khi sản phẩm được đưa ra, máy sẽ trở lại trạng thái đợi ban đầu Hãy thiết kế mạch tuần tự đồng bộ dùng trigơ JK để mô phỏng mạch điều khiển của máy bán hàng tự động

3 Viết chương trình mô tả mạch đếm tần số và hiển thị kết quả trên LED 7 đoạn

4 Viết chương trình mô tả bộ hợp kênh 16:1 từ bộ hợp kênh 4:1

Bài 1 Viết chương trình mô tả mạch tạo mã chẵn/lẻ 7 bit.

I Tổng quan nguyên lý hoạt động

Nguyên lý đơn giản như sau:

- Mã chẵn là số bit ‘1’ trong từ mã là chẵn , và mã lẻ là ngược lại

- Với 7 bit ta làm tương tự

II Mã chương trình và giải thích

Hàm main

Phỏng theo nguyên tắc hoạt động của bảng trên ta dễ dàng xây dựng được chương trình bằng các cú pháp điều kiện đơn giản : if else

Ta khai báo Port như sau:

- inp: in std_logic_vector(0 to 6); // từ mã đưa vào – 7 bit hiểu diễn

- chan: out std_logic_vector(0 to 7); // từ mã đầu ra – 8 bit biểu diễn : 7 bit

cho đầu vào và 1 bit thêm vào để tạo mã chẵn

- le: out std_logic_vector(0 to 7)); //// từ mã đầu ra – 8 bit biểu diễn : 7 bit

cho đầu vào và 1 bit thêm vào để tạo mã lẻ

Trang 4

-Testbench

Trang 5

Thiết kế logic số

Trang 6

III Chạy mô phỏng và sơ đồ RTL

- Như ta thấy ban đầu tín hiệu vào inp = 0000000 đang chẵn số ‘1’ vậy để tạo mã chẵn ta cần thêm bit ‘0’ vào cuối từ mã , để tạo từ mã lẻ ta cần thêm bit ‘1’ vào cuối từ mã

- Tiếp tục, khi inp =0000001 đang lẻ bit ‘1’ , vậy để tao mã chẵn ta thêm bit

‘1’ và mã lẻ ta thêm bit ‘0’

Bài 2 Viết chương trình mô tả máy bán hàng tự động sẽ thả kẹo sau khi nhận được 15 xu Máy có một khe nhận tiền xu gồm đồng 5 xu và 10 xu, mỗi lần nhận một xu Nếu đưa vào nhiều hơn 15 xu, máy sẽ trả lại tiền thừa Sau khi sản phẩm được đưa ra, máy sẽ trở lại trạng thái đợi ban đầu Hãy thiết kế mạch tuần tự đồng bộ dùng trigơ JK để mô phỏng mạch điều khiển của máy bán hàng tự động.

I Tổng quan nguyên lý hoạt động

Việc thực hiện chương trình bằng mạch tuần tự như yêu cầu bọn em làm đúng

về ý tưởng , cô cũng đã xem và không phát hiện ra lỗi nhưng chương trình không chạy Vậy nên bọn em đã làm thay thế bằng phương pháp máy trạng thái FSM

Trang 7

Thiết kế logic số

Nguyên lý hoạt động được mô tả đơn giản như hình vẽ : 5 xu – ‘0’ , 10 xu – ‘1’, khi nhận đủ 15 xu máy sẽ nhả kẹo , nếu hơn 15 xu máy nhả kẹo kèm tiền thừa

II Mã chương trình và giải thích

Hàm main

Trang 8

Ta khai báo Port như sau:

- Clk : in std_logic ; // tín hiệu kích thích

- Reset : in std_logic ; // tín hiệu dùng để quay lại trạng thái ban đầu, trong thực tế đây là chức năng khá cần thiết , ví dụ ta đút 5 xu vào máy nhưng không muốn mua sản phẩm , máy sẽ trả lại lại tiền và quay lại vị trí ban đầu

Coin_in : in std_logic; //là tín hiệu khi đưa xu vào máy:‘0’ là 5 xu ,‘1’ -10xu

- Drop_: out_std_logic ; //tín hiệu nhả kẹo

- Coin_out :in std_logic ; //tín hiệu nhả tiền thừa

Trang 9

Thiết kế logic số

Ta tạo ra 2 process :

- Process (sreg , coin_In , flag) : có tác dụng chuyển trạng thái khi đưa xu

vào : ví dụ S1 nhận coin_In =1 sẽ chuyển đến S3

- Process (sreg) : có tác dụng đưa ra giá trị đầu ra : nhả kẹo và nhả tiền: ví

dụ khi ở S3 sẽ thực hiện nhả kẹo nhưng không nhả tiền , S4 sẽ nhả kẹo và nhả tiền thừa , còn lại các trạng thái S0 , S1 , S2 sẽ không nhả kẹo cũng không nhả kẹo

Trang 10

Testbench

Trang 11

Thiết kế logic số

III Chạy mô phỏng và sơ đồ RTL

- Khi đủ 15 xu sẽ nhả kẹo nhưng không nhả tiền thừa , đồng thời xung nhịp clock tiếp theo sẽ quay về S0 để thực hiện đút tiền vào máy để thực hiện chu kỳ mới

- Khi hơn 15 xu sẽ nhả kẹo và tiền thừa , và xung nhịp clock tiếp theo sẽ quay về S0 để thực hiện chu kỳ mới

Bài 3 Viết chương trình mô tả mạch đếm tần số và hiển thị kết quả trên LED

7 đoạn

I Tổng quan nguyên lý hoạt động

Nguyên lý hoạt động : ta sẽ tạo ra 1 xung tham chiếu là 1s , trong 1s đó , ta thực hiện xây dựng bài toán để đếm số chu kỳ của xung clock truyền vào , kết quả đọc được chính là tần số của xung Clock sẽ hiện thị ra Led 7 đoạn

II Mã chương trình và giải thích

Việc xây dưng chương trình khá đơn giản khi chỉ cần các cú pháp điều kiện đơn giản : if else

Thực hiện khai báo Port như sau:

- CLK : in STD_LOGIC; //tín hiệu kích thích đếm

Trang 12

- ref : in STD_LOGIC; // tín hiệu tham chiếu , ta để 1s để thực hiện đếm xung clock

- qs: in std_logic; // tín hiệu giữ để quan sát việc hiển thị ra led, ví dụ khi đã thực hiện đếm xung clock trong 1s , ta sẽ giữ giá trị đếm được trong 1 khoảng thời gian nhỏ để hiện thị ra Led 7 đoạn , chủ yếu để Led hiển thị đúng không bị nhấp nháy

- Led_chuc, Led_dvi : out STD_LOGIC_VECTOR(6 downto 0) ;// hiển thi giá trị đo được

Hàm main

- Khi xung tham chiều ref =’0’ và qs =’1’ , ta sẽ giữ giá trị đo được để hiển thị ra Led

- Nều vẫn trong khoảng tham chiếu ref= ‘1’ , chương trình vẫn thực hiện

Trang 13

Thiết kế logic số

- Nhược điểm :

+ Do ta dùng 2 Led để hiện thị giá trị tần số đo được nên giá trị tối đa hiển thị được là 99

+ Ta dùng xung tham chiếu là 1s để đếm xung Clock nên tần số tối thiểu

đo được là 1Hz

- 2 process hiển thị tần số đo được ra Led 7 đoạn

Testbench

Trang 14

- Ta để chu kỳ của xung tham chiếu ref = 2s , 1s nửa chu kỳ lên dùng để đếm xung clock

- Xung qs dùng để quan sát giá trị đo được ra led , ta để chu kỳ lên 1900ms

để hiển thị ra led không bị nhấp nháy

Trang 15

Thiết kế logic số

III Chạy mô phỏng và sơ đồ RTL

- Khi ref = 1 , chương trình thực hiện đếm xung clock

- Xung qs giữ lại giá trị đo được để hiển thi ra led.

Bài 4 Viết chương trình mô tả bộ hợp kênh 16:1 (Enable hoạt động ở mức thấp)

I Tổng quan nguyên lý hoạt động

Nguyên lý hoạt động : đầu ra của bộ Mux được lấy từ giá trị đầu vào bởi sự quyết định bởi tín hiệu từ chân địa chỉ Quan sát mô phỏng hoạt động của bộ Mux 4:1 để hiều về nguyên lý hoạt động để từ đó xây dựng bộ Mux 16:1

Trang 16

Để xây dựng bộ Mux 16:1 , ta có 2 cách

- Dùng trực tiếp bộ Mux 16:1

- Dùng từ các bộ Mux nhỏ hơn ( 8:1 , 4:1 , 2:1)

II Mã chương trình và giải thích

1 Dùng trực tiếp Mux 16:1

Hàm main

Trang 17

Thiết kế logic số

- Cách này tuy đơn giản nhưng ít được sử dụng nên chỉ đưa ra để làm đa dạng cho cách giải quyết bài toán

2 Ghép từ Mux 4:1

Hàm main

Ý tưởng ở đâu là tạo ra chương trình Mux 4:1 cơ bản để dựa vào đó để xây dựng Mux 16:1 bằng Port Map

- Cách xây dựng Mux 4:1 khá đơn giản , trước tiên khai báo Port;

+ d: in std_logic_vector(3 downto 0); // giá trị đầu vào : 4 đầu vào

Trang 18

+ sel: in std_logic_vector(1 downto 0); // chân địa chỉ dùng chọn giá trị cho đầu ra

+ s: out std_logic ; // xuất giá trị ra

- Xây dựng Mux 16:1 từ Mux 4:1 bằng Port Map , hiểu đơn giản là ánh xạ

từ Mux 4:1 Tạo 4 Mux 4:1 ta có 4 đầu ra , từ 4 đầu ra này ta đưa vào 4 đầu vào của bộ Mux 4:1 thứ 5 để được bộ Mux 16:1

Trang 19

Thiết kế logic số

Trang 20

III Chạy mô phỏng và sơ đồ RTL

- Khi chân địa chỉ sel2=00 và sel1=00 , đầu ra sẽ lấy giá trị của chân đầu vào thứ 1 của cin1 =0000 , tức là theo thứ tự sẽ là chân đầu vào thứ 1 của

bộ Mux 16:1

- Khi chân địa chỉ sel2=01 và sel1=01 đầu ra sẽ bằng giá trị chân thứ 6 của

bộ Mux 16:1 ( cin2(3,0)= 0010)

Ngày đăng: 11/10/2022, 16:39

w