Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
2,89 MB
Nội dung
ĐẠI HỌC QUỐC GIA ĐẠI HỌC BÁCH KHOA TP.HCM BÁO CÁO BÀI TẬP NHĨM Mơn: Hệ thống điều khiển nhúng Chương 1: THIẾT KẾ PHẦN CỨNG DÙNG FPGA GVHD: TS Nguyễn Vĩnh Hảo Nhóm - Lớp L02 STT TP HCM, ngày 22 tháng năm 2021 Mục lục Bài Đo độ rộng xung ……………………………………………………… …… Bài Hiển thị led đoạn …………………………………………………………… Bài Điều rộng xung ……………………………………………………………… Bài Vẽ lại mạch giải mã Slide15 Quartus/Block Diagram ………………9 Bài Vẽ lại mạch giải mã Slide19 Quartus/ Block Diagram ………… 14 i Bài tập nhóm chương Bài 1: Đo độ rộng xung - Đầu vào xung PulseIn, clk (1us) - Đầu D[15:0] độ rộng xung PulseIn (đơn vị us) - Sử dụng Khối lpm_counter Megafunctions\Arithmetic Bài làm: Ta dùng đếm lpm_counter0, với xung clock xung CLK(1us), xung PulseIn đóng vai trị Reset đếm (xung qua cổng NOT đảo giá trị tín hiệu cung cấp cho chân aclr) - Khi xung PulseIn đếm đếm lên, sau ngõ vào CLK cạnh lên ngõ tăng lên giá trị Khi xung PulseIn chân aclr nhận mức Reset đếm (ngõ giữ giá trị 0) Sơ đồ thiết kế: Mô phỏng: Đặt giá trị ngõ vào CLK, PulseIn: CLK xung clock có độ rộng 1us, PulseIn xung ta muốn đo chiều dài Kết mô phỏng: Nhận xét: ➢ Nhìn vào kết mơ thấy kết tương đối xác Tại cạnh xuống xung PulseIn ngõ D[15 0] đếm Reset tiếp tục đếm lên có cạnh lên xung PulseIn ( đếm Reset ngõ Q IC chốt giữ giá trị đếm ngõ D đếm) ➢ Trong số trường hợp độ dài xung đếm có sai số Độ dài xung thực tế lớn nhỏ hơn, độ chênh lệch lớn 1us Nguyên nhân giá trị đếm thay đổi có cạnh lên xung CLK số trường hợp điểm bắt đầu kết thúc xung PulseIn nằm trước hay nằm sau cạnh lên xung CLK cho sai số khác (độ chênh lệch lớn xấp xỉ 1us) Cụ thể kết đây: Độ dài xung PulseIn khoảng 2,6us đọc 2us Độ dài xung PulseIn khoảng 2,2us đọc 3us Kết luận: Độ rộng thực tế xung dao động xung quanh giá trị đọc với biên độ xấp xỉ chu kì xung CLK, biết độ rộng xung cách tương đối Để độ xác cao ta nên đưa xung CLK với chu kì nhỏ Bài 2: Hiển thị LED đoạn - Đầu vào xung clk (1us) Đầu D[6:0]: liệu LED đoạn (cực âm chung) Số LED hiển thị: Hiển thị từ 0ms – 9ms, sau lặp lại Giải mã LED IC 7447 Bài làm: Ta dùng đếm lpm_counter0 đầu vào xung clock CLK(1us) đếm lên giá trị 999 để tạo xung 1ms cấp cho lpm_counter1 Bộ đếm lpm_counter0 lpm_counter1 tự Reset đạt ngưỡng giá trị ta cài đặt (Modulus = 1000 Modulus = 10) Ngõ đếm lpm_counter1 (giá trị đếm từ - 9) kết nối đến chân A, B, C, D IC 7447 để thực giải mã sang tín hiệu LED Các tín hiệu ngõ IC 7447 qua cổng NOT cung cấp cho chân LED có cực âm chung Sơ đồ thiết kế: Mô phỏng: Đặt giá trị ngõ vào CLK xung clock có độ rộng 1us Các ngõ LED_A, LED_B… Kết mô phỏng: Nhận xét: ➢ Kết mơ xác, tín hiệu đoạn LED có giá trị thể số muốn hiển thị LED đoạn ➢ Thời gian hiển thị giá trị từ đến với yêu cầu 1ms, ngoại trừ giá trị hiển thị chương trình khởi động có thời gian chưa xác (thực tế 998,5us) ➔ Nguyên nhân cạnh lên xung CLK đếm có giá trị 1, nên thời gian từ chương trình hoạt động đến đếm nhảy lên giá trị 999 (lpm_counter1 nhảy lên 1) tổng thời gian 998,5us Bài 3: Điều rộng xung - Đầu vào T (8bit), Ton (8bit), clk (1us) - Đầu PwmOut - Độ phân giải bit (255 mức) - Ton, T thay đổi lần đầu lúc khởi động, T =10 giá trị Ton = – T - Sử dụng Khối lpm_counter lpm_compare Megafunctions\Arithmetic Bài làm: Ta dùng đếm lpm_counter0 chế độ up counter đầu vào xung clock CLK(1us) ngõ cấp cho lpm_campare1 lpm_campare0 lpm_campare1 so sánh cho T (ngõ chế động agb- “>”) lpm_campare0 lpm so sánh cho Ton (chế độ aleb – “< =”) lpm_campare2 so sánh Ton số 0, cổng and2 để and ngõ lpm_campare2 lpm_campare0 đầu Output PWMout Ta thêm vào ngõ lpm_counter output Val[7 0] để kiểm tra xem giá trị lpm_counter Sơ đồ thiết kế: Mơ dạng sóng: set clk với chu kì 1us, T=10 Ton= 0- 10 Kết mô phỏng: Khi Ton = 0: Khi Ton = 1: Khi Ton = 2: Khi Ton = 5: Khi Ton = 9: Khi Ton = 10: Nhận xét: ➢ Khi Ton = giá trị PWMout = tồn (Do ta dùng lpm_campare để so sánh với kết hợp and để giá trị luôn = Ton 0) ➢ Khi Ton =1 đến Độ rộng xung tăng dần (như hình) ➢ Khi Ton =10 Ngõ =1 tồn q trình, có gai điểm 10 → → (Clear từ 10 0) Bài 4: Vẽ lại mạch giải mã slide15 Quartus/Block Diagram • Yêu cầu thiết kế Bài làm: • Dựa giải mã địa slide • Sơ đồ kết nối Quartus (giải mã đến module) Sơ đồ chốt liệu chọn chip /CS module Module ADC 10 Module DAC Module PWM 11 Module Encoder Module DI 12 • Kết build chương trình thiết kế Nhận xét: ➢ Đã hồn thành nhiệm vụ tập giải mã đến module ➢ Chương trình build khơng xảy lỗi Địa module: CS_ADC: 0x00 – 0x03 CS_DAC: 0x10 – 0x11 CS_PWM: 0x20 – 0x25 CS_ENC: 0x30 – 0x35 CS_DI: 13 Bài Mạch giải mã Slide19 Quartus/ Block Diagram Bài làm: Sơ đồ thiết kết Module_ADC: 14 Module_DAC: Module_PWM: 15 Module_ENC: Module_DI: 16 Module_DO: Module_CAP: Module_SPI: 17 Module_I2C: Nhận xét: Biên dịch thành công! Địa 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 18 ... Quartus/Block Diagram ………………9 Bài Vẽ lại mạch giải mã Slide19 Quartus/ Block Diagram ………… 14 i Bài tập nhóm chương Bài 1: Đo độ rộng xung - Đầu vào xung PulseIn, clk (1us) - Đầu D [15 :0] độ rộng xung PulseIn... CS_DAC: 0x10 – 0x 11 CS_PWM: 0x20 – 0x25 CS_ENC: 0x30 – 0x35 CS_DI: 13 Bài Mạch giải mã Slide19 Quartus/ Block Diagram Bài làm: Sơ đồ thiết kết Module_ADC: 14 Module_DAC: Module_PWM: 15 Module_ENC:... Module ADC 10 Module DAC Module PWM 11 Module Encoder Module DI 12 • Kết build chương trình thiết kế Nhận xét: ➢ Đã hoàn thành nhiệm vụ tập giải mã đến module ➢ Chương trình build không xảy lỗi