Báo cáo bài tập lớn chương 1 Hệ thống điều khiển nhúng

13 2 0
Báo cáo bài tập lớn chương 1 Hệ thống điều khiển nhúng

Đ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

Báo cáo bài tập lớn chương 1 môn Hệ thống Điều khiển Nhúng, Đại học Bách Khoa ĐHQG TPHCM, do thầy Ts. Nguyễn Vĩnh Hảo phụ trách. Đo độ rộng xung Hiển thị LED 7 đoạn Điều rộng xung Vẽ lại mạch giải mã ở Slide15 trên QuartusBlock Diagram Vẽ lại mạch giải mã ở và Slide19 trên Quartus Block Diagram

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA - - Link full source: https://drive.google.com/file/d/1OkE0N1Xbp9W6UgzPhAntY (Phần đuôi ở cuối tài liệu) BÁO CÁO BÀI TẬP LỚN CHƯƠNG I GVGD: Nguyễn Vĩnh Hảo Lớp: L02 Nhóm: 6 Sinh viên: Nguyễn Tấn Lộc (1914023) Vương Gia Long (1810311) Lê Bá Nam (1810335) Nguyễn Ngọc Nhân (1810387) TPHCM, tháng 9 năm 2021 BÀI TẬP LỚN CHƯƠNG 1 1 Đo độ rộng xung - Đầu vào xung PulseIn, clk (1us) - Đầu ra D[15:0] chỉ độ rộng xung PulseIn (đơn vị us) - Sử dụng khối lpm_counter trong Megafunctions/Arithmetic Mạch schematic: Giải thích: Bộ lpm_counter: chế độ counter up 16 bit Khi chân PulseIn lên 1, qua cổng not sẽ làm chân clear về 0, cho phép bộ đếm đếm lên theo chu kì xung clock Ngõ ra của bộ đếm (Q[15:0]) sẽ nối tới dữ liệu vào (D[8:1]) của hai mạch chốt 74374 (tương ứng byte cao và byte thấp của ngõ ra bộ đếm) để chốt số xung đếm được IC 74374: Khi PulseIn có xung cạnh xuống qua cổng not sẽ đưa vào chân CLK của hai IC74374 cho phép IC này chốt kết quả đếm của khối lpm_counter (byte cao và byte thấp) Chân OEN (output enabled được nối đất (luôn cho phép chốt dữ liệu, chỉ phụ thuộc vào tín hiệu xung clock) Tiến hành mô phỏng: Xung clk có chu kì 1us, duty cycle = 50%: Xung PulseIn có chu kì 100us, duty cycle = 50%: Kết quả thực hiện: Khi PulseIn có xung cạnh xuống, dữ liệu được chốt ra ngõ ra Q của hai IC74374 Ngõ ra D[15:0] của bộ lpm_counter: Ngõ ra Q[15:0] được chốt có giá trị nhị phân 00110010 tương đương giá trị thập phân là 50 Nhận xét: Mạch schematic cho kết quả mô phỏng đúng theo lý thuyết, PulseIn có chu kì 100us và duty cycle = 50%, nên độ rộng xung là 50us tương ứng với 50 chu kì xung clock 2 Hiển thị LED 7 đoạn -Đầu vào xung clk (1us) -Đầu ra D[6:0]: dữ liệu LED 7 đoạn (cực âm chung) -Số LED hiển thị: 1 -Hiển thị từ 0ms – 9ms, sau đó lặp lại -Giải mã LED bằng IC 7447 Mạch schematic Giải thích: Bộ lpm_counter0: chế độ counter up 10bit, đếm lên modulus 1000 (0 – 999) Có nhiệm vụ chuyển đổi 1us ➔ 1ms cout của lpm_counter0 sẽ lên mức 1 khi lpm_counter0 đếm đủ modulus 1000, đồng thời sẽ là xung kích hoạt cho lpm_counter1 Bộ lpm_counter1: chế độ counter up 4bit, đếm lên modulus 10 (0 – 9) Có nhiệm vụ đếm từ 0ms – 9ms Ngõ ra q[3 0] sẽ có giá trị từ 0 – 9 được nối tới ICgiải mã LED 7447 IC 7447: Giải mã BCD sang LED 7 đoạn Ngõ vào q[3 0] cho DCBA, các chân LTN, RBIN, BIN kích hoạt mức thấp ➔ nối lên Vcc Do yêu cầu cực âm chung ➔ cần thêm cổng not ở ngõ ra của IC 7447 Bảng mô tả cách tạo ra các chữ để hiển thị lên LED 7 đoạn cực âm chung Số nhị phân Số 7 6 5 4 3 2 1 0 HEX dp g f e d c b a 0 0 0 1 1 1 1 1 1 0x3F 1 0 0 0 0 0 1 1 0 0x06 2 0 1 0 1 1 0 1 1 0x5B 3 0 1 0 0 0 0 0 0 0x40 4 0 1 1 0 0 1 1 0 0x66 5 0 1 1 0 1 1 0 1 0x6D 6 0 1 1 1 1 1 0 1 0x7D 7 0 0 0 0 0 1 1 1 0x07 8 0 1 1 1 1 1 1 1 0x7F 9 0 1 1 0 1 1 1 1 0x6F Tiến hành mô phỏng: Cài đặt xung clock 1us, thời gian mô phỏng 20ms Kết quả mô phỏng trong 20ms: Nhận xét: Kết quả ngõ ra của LED giống với bảng mô tả led 7 đoạn cực âm chung Tuy nhiên có 2 số khác biệt Thông thường (0x7D) IC 7447 (0x7C) Thông thường (0x6F) IC 7447 (0x67) 3 Điều rộng xung - Đầu vào T (8bit), Ton (8bit), clk (1us) - Đầu ra PwmOut - Độ phân giải 8 bit (255 mức) - Ton, T chỉ thay đổi 1 lần đầu lúc khởi động, T =10 hoặc 1 giá trị bất kỳ Ton = 0 – T - Sử dụng Khối lpm_counter và lpm_compare trong Megafunctions\Arithmetic Mạch schematic: Giải thích: Điều rộng xung PWM bằng cách sử dụng 2 khối lpm_compare, 1 khối lpm_counter và IC74374 để chốt dữ liệu khi Ton thay đổi và cập nhật ở chu kì sau: - Khối lpm_counter0 thực hiện mode đếm lên binary 8 bit và sẽ được được reset về 0 khi chân aclr=1 - Khối lmp_compare0 sẽ tạo ra xung PWM có chu kì T bằng cách so sánh giữa giá trị đếm của lpm_counter0 (D[7 0]) và giá trị T, khi D[7 0]=T thì sẽ làm tích cực chân aclr và lmp_counter0 sẽ thực hiện đếm lên lại từ 0 - Khối lpm_compare1 sẽ thực hiện so sánh Ton và D[7 0], nếu D[7 0]  Ton thì xung PWM có giá trị bằng 1 và ngược lại xung PWM bằng 0 - IC74374 thực hiện chốt dữ liệu khi Ton thay đổi và cập nhật ở chu kì tiếp theo Kết quả mô phỏng: - Với T=10, Ton=0 Nhận xét: Khi T=10, Ton=0 thì duty cycle=0%, xung PWM=0 - Với T=10, Ton=1 Nhận xét: Khi T=10, Ton=1 thì duty cycle=10%, thời gian mức 1 của xung PWM nhỏ hơn so với thời gian mức 0 - Với T=10, Ton=9 Nhận xét: Khi T=10, Ton=9 thì duty cycle=90%, thời gian mức 1 của xung PWM lớn hơn thời gian mức 0 - Với T=10, thực hiện thay đổi Ton Nhận xét: Khi T=10, thực hiện thay đổi giá trị của Ton ở chu kì thứ 2 từ 5 → 8 thì giá trị Ton=8 được cập nhật ở chu kì thứ 3 của xung PWM, ở chu kì thứ 3 cũng thực hiện hay đổi Ton từ 8 → 5 → 1 → 4 giá trị Ton =4 được cập nhật ở chu kì thứ 4 (Do Ton sẽ được cập nhật ở chu kì sau của xung PWM nên tất cả các trường hợp mô phỏng thì xung PWM sẽ luôn bằng 0 ở chu kì đầu tiên) 4 Vẽ lại mạch giải mã ở Slide15 trên Quartus/Block Diagram - Số kênh nhiều nhất là 6 (module PWM và Encoder) nên cần 3 đường địa chỉ để giải mã các kênh A[2 0] - Có tất cả 5 module nên cần 3 đường địa chỉ để giải mã các module A[6 4] - Dùng IC74138 để giải mã địa chỉ đến từng Module: + A[6:4] nối vào các ngõ vào C, B, A, còn dư lại A[7] nối vào ngõ G2AN tích cực thấp, chỉ cho phép IC hoạt động khi A[7]=0, khi bit này lên mức cao thì IC bị bất hoạt + Các ngõ vào cho phép G1, G2BN còn lại lần lượt nối lên VCC và GND để cho phép IC luôn hoạt động và chỉ phụ thuộc vào bit A[7] + 5 ngõ ra từ Y0N – Y4N nối đến chân CS của từng module - Tầm địa chỉ hoạt động của các module: CS_ADC: 0x00 – 0x03 CS_DAC: 0x10 – 0x11 CS_PWM: 0x20 – 0x25 CS_ENC: 0x30 – 0x35 CS_DI: 0x40 – 0x41 Mạch Schematic: Nhận xét: Thực hiện compile trên quartus không xuất hiện lỗi, mạch được vẽ đúng 5 Vẽ lại mạch giải mã ở và Slide19 trên Quartus/ Block Diagram - Số kênh nhiều nhất là 16 kênh (module ADC) nên cần 4 đường địa chỉ A[3 0] để giải mã các kênh - Có tất cả 9 module nên cần 4 đường địa chỉ A[7 4] để giải mã các module - Dùng IC74138 và 1 cổng NOT để giải mã địa chỉ đến từng Module: + A[6:4] nối vào các ngõ vào C, B, A; A[7] vừa qua cổng NOT làm đường giải mã địa chỉ module thứ 9, vừa nối vào ngõ vào cho phép G2AN để chỉ cho phép tại 1 địa chỉ có 1 module hoạt động (khi A[7]=0, IC giải mã 8 module đầu; khi A[7]=1, IC bị bất hoạt làm cho chỉ có module thứ 9 hoạt động) + Các ngõ vào cho phép G1, G2AN, G2BN lần lượt nối lên VCC và GND như hình để cho phép IC luôn hoạt động + Các ngõ ra từ nối đến các module -Tầm địa chỉ hoạt động của các module: CS_ADC: 0x00 – 0x0F CS_DAC: 0x10 – 0x11 CS_PWM: 0x20 – 0x23 CS_ENC: 0x30 – 0x33 CS_DI: 0x40 – 0x43 CS_DO: 0x50 – 0x51 CS_CAP: 0x60 – 0x65 CS_SPI: 0x70 CS_I2C: 0x80 Mạch Schematic: Nhận xét: Thực hiện compile trên quartus không xuất hiện lỗi, mạch được vẽ đúng Link full source: https://drive.google.com/file/d/1OkE0N1Xbp9W6UgzPhAntYQBR-mmerXyh/view?usp=sharing

Ngày đăng: 20/03/2024, 10:10

Tài liệu cùng người dùng

Tài liệu liên quan