สารบัญ:

Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 ขั้นตอน
Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 ขั้นตอน

วีดีโอ: Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 ขั้นตอน

วีดีโอ: Integer_Matrix_Solver_UART_SERIAL_VHDL: 3 ขั้นตอน
วีดีโอ: TSP #62 - Tutorial on the Design & Implementation of an FPGA RGB LED Matrix Driver 2024, พฤศจิกายน
Anonim
Integer_Matrix_Solver_UART_SERIAL_VHDL
Integer_Matrix_Solver_UART_SERIAL_VHDL

บทช่วยสอนที่สอนได้นี้จะแสดงให้คุณเห็นถึงวิธีการสร้างตัวแก้เมทริกซ์แบบ 2 คูณ 2 โดยใช้โมดูลเทอร์มินัล UART Serial เช่นเดียวกับโมดูลตัวแก้เมทริกซ์ ผู้ใช้จะสามารถป้อนเมทริกซ์ขนาด 2 คูณ 2 จากนั้นการออกแบบที่นำมาใช้จะคายโซลูชันไปยังระบบเชิงเส้นตรง

ในการใช้รหัสนี้ คุณจะต้อง:

- บอร์ด FPGA Digilent Basy 3

- คอมพิวเตอร์ที่มีซอฟต์แวร์ Xilinx Vivado (Webpack Edition จะใช้งานได้) สำหรับโมดูลนี้ เราใช้เวอร์ชัน 2017.2

- สาย Micro USB (สามารถถ่ายโอนข้อมูลได้)

ผู้เขียน: Drew Miller, EE Major, Cal Poly SLO, Sukhdeep Singh, EE Major, Cal Poly SLO Class: การออกแบบดิจิทัล

- ผู้สอน EE/CPE 133: Joseph Callenes

ที่มา:

  • UART_TX, UART_RX จาก:
  • ดีเบตจาก:

ฟังก์ชันหารสองตัวเลขที่ไม่ได้ลงชื่อ:

ขั้นตอนที่ 1: ขั้นตอนที่ 1: มันทำงานอย่างไร

ขั้นตอนที่ 1: มันทำงานอย่างไร
ขั้นตอนที่ 1: มันทำงานอย่างไร
ขั้นตอนที่ 1: มันทำงานอย่างไร
ขั้นตอนที่ 1: มันทำงานอย่างไร

อินพุต: ผู้ใช้ป้อนระบบเชิงเส้นตรงลงในเทอร์มินัลคอมพิวเตอร์ จากนั้นโมดูล UART จะแปลงเป็นอาร์เรย์สำหรับโมดูลตัวแก้เมทริกซ์เพื่อจัดการ โมดูล UART เชื่อมต่อกับผู้ใช้และอนุญาตให้ป้อนเมทริกซ์ที่เหมาะสมและแนะนำให้ป้อนข้อมูลอย่างถูกต้อง ระบบยังมีสวิตช์รีเซ็ต/เปิดใช้งานซึ่งจับคู่กับสวิตช์ด้านซ้ายสุดของบอร์ด Basy3

ผลลัพธ์: ผลลัพธ์จากตัวแก้ไขเมทริกซ์จะถูกส่งผ่านอินเทอร์เฟซโมดูล UART จากนั้นแสดงบนเทอร์มินัลคอมพิวเตอร์พร้อมโซลูชันที่แสดงบนหน้าจอ ตัวแก้ปัญหาเมทริกซ์จะส่งออกเวกเตอร์ลอจิกมาตรฐานที่ไม่ได้ลงนามไปยังโมดูล UART ซึ่งจะแปลงเป็นเอาต์พุตที่เป็นมิตรต่อผู้ใช้มากขึ้นเพื่อให้ผู้ใช้ได้ชื่นชม ตัวแก้ไขเมทริกซ์ปัจจุบันสามารถป้อนตัวเลขได้ไม่เกิน 15 เท่านั้นและผลลัพธ์เอาต์พุตต้องเป็นจำนวนเต็มที่สะอาด มิฉะนั้นโปรแกรมแก้ปัญหาเมทริกซ์ไม่สามารถส่งออกโซลูชันที่ถูกต้องได้

โมดูล "การควบคุมแบบอนุกรม" ระดับบนสุด: ผู้ใช้ป้อนระบบเชิงเส้นตรงที่ต้องการลงในโมดูลนี้ผ่านโมดูล UART_TX และ UART_RX และแปลงอินพุตจากเทอร์มินัลคอมพิวเตอร์เป็นอาร์เรย์ของเวกเตอร์ลอจิกมาตรฐานที่ประมวลผลโดยโมดูลตัวแก้เมทริกซ์ โมดูลตัวแก้ปัญหาเมทริกซ์จะส่งคืนอาร์เรย์ของเวกเตอร์ลอจิกมาตรฐานซึ่งจะแสดงบนหน้าจอโดยอินเทอร์เฟซอนุกรม UART การส่งและรับข้อมูลผ่านโมดูล UART ทำได้โดยใช้ FSM ที่มีความยาวมากในโมดูลนี้

โมดูล UART_TX: ผู้ใช้ป้อนเวกเตอร์ลอจิกมาตรฐาน 8 บิตและส่งสัญญาณเพื่อส่งข้อมูลผ่านอินเทอร์เฟซ USB ขณะที่กำลังส่งข้อมูล สัญญาณ TX_Active จะสูง หลังจากที่ส่งข้อมูลแล้ว สัญญาณ TX_Done จะกะพริบ

โมดูล UART_RX: ผู้ใช้จะได้รับข้อมูลครั้งละ 8 บิตจากอินเทอร์เฟซ USB พัลส์จาก RX_DV เป็นตัวบ่งชี้ว่าได้รับข้อมูลแล้วและสามารถอ่านลอจิกเวกเตอร์ RX_Byte ได้

โมดูล Matrix Solver: ตัวแก้ปัญหาเมทริกซ์ได้รับอาร์เรย์ที่กำหนดจากโมดูล UART ที่แสดงถึงเมทริกซ์ จากนั้นตัวแก้ไขเมทริกซ์จะแปลงตัวเลขแต่ละตัวในระบบเชิงเส้นตรงให้เป็นจำนวนเต็มเพื่อให้ใช้งานได้ง่ายขึ้น ภายในโมดูลตัวแก้ไขเมทริกซ์มีโมดูลย่อยหลายโมดูล โมดูลย่อยแรกคือ inverse_matrix_1 ซึ่งรับเมทริกซ์แล้วให้ค่าผกผันของเมทริกซ์ที่กำหนด โมดูลย่อยถัดไปคือตัวคูณซึ่งคูณผลรวมของผลรวมของเมทริกซ์ด้วยเมทริกซ์ผกผันโดยใช้การดำเนินการเมทริกซ์มาตรฐาน ในที่สุด โมดูลหลักจะจับคู่พวกมันเข้าด้วยกันเพื่อส่งออกคำตอบเดียว

ขั้นตอนที่ 2: ขั้นตอนที่ 2: ตั้งโปรแกรมบอร์ด Basy 3

เมื่อคุณได้รับซอร์สโค้ดจากด้านล่างแล้ว ให้อัปโหลดไปยังบอร์ด basey 3 เพื่อใช้อินเทอร์เฟซ

reference.digilentinc.com/basy3/refmanual

ขั้นตอนที่ 3: ขั้นตอนที่ 3: วิธีใช้งาน

ใช้อินเทอร์เฟซแบบอนุกรมที่ 9600 บอดเพื่อสื่อสารกับ Basy3 UART ฉันใช้หน้าจอบน linux ด้วยคำสั่งต่อไปนี้:

หน้าจอ /dev/ttyUSB1 9600

ในการทำสิ่งนี้บน linux ฉันต้องเพิ่มผู้ใช้ในกลุ่ม "dialout" บน Windows สีโป๊วควรใช้งานได้ และบน MacOSX ควรเป็นกระบวนการที่คล้ายกับ linux

การพลิกสวิตช์ซ้ายสุดไปที่ตำแหน่งเปิดจะเริ่มตัวแก้ไขเมทริกซ์ การเปลี่ยนเป็นปิดจะเป็นการรีเซ็ตตัวแก้เมทริกซ์

แนะนำ: