โลโก้ VHDLwhiz

เครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz UART

เครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz-UART

ข้อมูลสินค้า

ข้อมูลจำเพาะ:

  • ชื่อผลิตภัณฑ์: VHDL ลงทะเบียนเครื่องกำเนิดอินเทอร์เฟซการทดสอบ UART
  • เวอร์ชัน : 1.0.4
  • วันที่ : 18 สิงหาคม 2024
  • ผู้เขียน : โจนาส จูเลียน เจนเซน
  • ผลิตภัณฑ์ URL: ลิงค์สินค้า
  • อีเมลติดต่อ: jonas@vhdlwhiz.com

คำอธิบาย

ผลิตภัณฑ์นี้ช่วยให้คุณสร้างอินเทอร์เฟซแบบกำหนดเองสำหรับการอ่านและเขียนค่ารีจิสเตอร์ FPGA โดยใช้ UART โมดูล VHDL ที่สร้างขึ้นและสคริปต์ Python ช่วยให้สามารถโต้ตอบกับรีจิสเตอร์ประเภทต่างๆ ในการออกแบบ FPGA ของคุณได้

ความต้องการ

  • ล่ามภาษา Python 3
  • แพ็คเกจ pyserial

โปรโตคอล

ผลิตภัณฑ์ใช้โปรโตคอลการจัดกรอบข้อมูลโดยมีอักขระควบคุมสี่ตัว:

  • ชื่อ: อ่าน REQ, ค่า: 0x0A – คำสั่งจากโฮสต์ไปยัง FPGA เพื่อเริ่มลำดับการเขียนเพื่อส่งรีจิสเตอร์ทั้งหมดกลับผ่าน UART
  • ชื่อ: เริ่มเขียน, ค่า: 0x0B – ทำเครื่องหมายจุดเริ่มต้นของลำดับการเขียนในทั้งสองทิศทาง
  • ชื่อ: END_เขียน, ค่า: 0x0C – ทำเครื่องหมายจุดสิ้นสุดของลำดับการเขียนในทั้งสองทิศทาง
  • ชื่อ: หนี, ค่า: 0x0D – อักขระ Escape ที่ใช้ในการหลบหนีคำควบคุม

คำแนะนำการใช้ผลิตภัณฑ์

การรันสคริปต์

ในการใช้ผลิตภัณฑ์ โปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Python 3 และแพ็กเกจ Pyserial แล้ว รันสคริปต์ผ่านอินเทอร์พรีเตอร์ Python 3

การสร้างอินเทอร์เฟซแบบกำหนดเอง

ใช้สคริปต์ gen_uart_regs.py เพื่อสร้างอินเทอร์เฟซแบบกำหนดเองสำหรับการอ่านและการเขียนค่ารีจิสเตอร์ FPGA คุณสามารถระบุองค์ประกอบของรีจิสเตอร์อินพุตและเอาต์พุตและประเภทต่างๆ เมื่อสร้างเอาต์พุต files.

การโต้ตอบกับรีจิสเตอร์

คุณสามารถอ่านหรือเขียนไปยังรีจิสเตอร์จำนวนเท่าใดก็ได้ในดีไซน์ FPGA ของคุณโดยใช้โมดูล VHDL ที่สร้างขึ้นและสคริปต์ Python รีจิสเตอร์ที่สามารถเข้าถึงได้สามารถมีประเภทต่างๆ เช่น std_logic, std_logic_vector, signed หรือ unsigned

ใบอนุญาต

  • ใบอนุญาต MIT ครอบคลุมข้อกำหนดลิขสิทธิ์และข้อกำหนดการใช้งานของซอร์สโค้ด โปรดดูที่ LICENSE.txt file ในซิป file สำหรับรายละเอียดเพิ่มเติม

บันทึกการเปลี่ยนแปลง

  • การเปลี่ยนแปลงเหล่านี้อ้างถึงโครงการ fileและเอกสารนี้ได้รับการปรับปรุงให้ทันสมัยตามนั้น
เวอร์ชัน หมายเหตุ
1.0.0 การเปิดตัวครั้งแรก
1.0.1 แก้ไขข้อบกพร่องการอ้างอิง "self" ที่ขาดหายไปเมื่อนำเข้าเป็น uart_regs.py เป็นโมดูล Python แก้ไขการพิมพ์ที่ล้มเหลวในการเขียนเป็นข้อยกเว้น

หลีกเลี่ยงการพิมพ์ไปที่คอนโซลเมื่อทำงานเป็นโมดูลที่นำเข้า

1.0.2 แก้ไขข้อผิดพลาด Vivado [Synth 8-248] เมื่อไม่มีการควบคุมโหมดออก
1.0.3 แก้ไขคำเตือน Vivado Linter: การลงทะเบียนเปิดใช้งานโดย

รีเซ็ตแบบซิงโครนัส

1.0.4 แก้ไขกรณีพิเศษเมื่อได้รับคำที่มีรูปแบบไม่ถูกต้องโดยมีอักขระ escape เป็นไบต์สุดท้าย คำถัดไปจะสูญหายไปด้วยเนื่องจากเราไม่ได้ล้าง recv_data_prev_is_escape เมื่อกลับสู่ IDLE

สคริปต์ gen_uart_regs.py อนุญาตให้มีเฉพาะชื่อ reg ที่ไม่ซ้ำกันเท่านั้น

คำอธิบาย

  • เอกสารนี้อธิบายดังต่อไปนี้ files และโฟลเดอร์:
  • gen_uart_regs.py
  • สร้าง/uart_regs.vhd
  • สร้าง/uart_regs.py
  • สร้าง/instantiation_template.vho
  • rtl/uart_regs_backend.vhd
  • rtl/uart_rx.vhd
  • rtl/uart_tx.vhd
  • สาธิต/lattice_icestick/
  • สาธิต/xilinx_arty_a7_35/
  • สาธิต/xilinx_arty_s7_50/
  • สคริปต์ gen_uart_regs.py และ VHDL ที่รองรับ fileในโปรเจ็กต์นี้อนุญาตให้คุณสร้างอินเทอร์เฟซที่กำหนดเองสำหรับการอ่านและเขียนค่ารีจิสเตอร์ FPGA ประเภทและความกว้างต่างๆ โดยใช้ UART
  • คุณสามารถใช้โมดูล VHDL ที่สร้างขึ้นและสคริปต์ Python เพื่ออ่านหรือเขียนไปยังรีจิสเตอร์จำนวนเท่าใดก็ได้ในการออกแบบของคุณ การลงทะเบียนที่เข้าถึงได้ของ UART สามารถมีประเภท std_logic, std_logic_vector, ลงนามหรือไม่ได้ลงนาม
  • คุณสามารถเลือกองค์ประกอบที่แม่นยำของรีจิสเตอร์อินพุตและเอาท์พุตและประเภทเมื่อสร้างเอาต์พุต fileกำลังใช้สคริปต์ gen_uart_regs.py
  • สคริปต์ Python ถูกสร้างขึ้นบางส่วนด้วยความช่วยเหลือของเครื่องมือปัญญาประดิษฐ์ ChatGPT ในขณะที่โค้ด VHDL นั้นถูกสร้างขึ้นด้วยมือ

ความต้องการ

  • สคริปต์ในโปรเจ็กต์นี้ต้องทำงานผ่านล่าม Python 3 และต้องติดตั้งแพ็คเกจ Pyserial
  • คุณสามารถติดตั้ง pyserial ผ่าน Pip ได้โดยใช้คำสั่งนี้: pip install pyserial

โปรโตคอล

  • วีเอชดีแอล files และสคริปต์ Python ใช้โปรโตคอลการจัดกรอบข้อมูลที่มีการควบคุมสี่ประการ
ชื่อ ค่า ความคิดเห็น
อ่าน REQ 0x0A คำสั่งจากโฮสต์ไปยัง FPGA เพื่อเริ่มการเขียน

ลำดับการส่งรีจิสเตอร์ทั้งหมดกลับผ่าน UART

START_เขียน 0x0B ทำเครื่องหมายจุดเริ่มต้นของลำดับการเขียนใน

ทิศทาง

END_เขียน 0x0C ทำเครื่องหมายจุดสิ้นสุดของลำดับการเขียนในทิศทางใดทิศทางหนึ่ง
หนี 0x0D อักขระ Escape ใช้สำหรับ Escape คำควบคุมใดๆ รวมถึงอักขระ ESCAPE ด้วย เมื่อปรากฏเป็นข้อมูลระหว่างเครื่องหมาย START_WRITE และ END_WRITE

ไบต์ READ_REQ ที่ไม่ได้ใช้ Escape ที่ส่งไปยัง FPGA คือคำสั่งให้ส่งรีจิสเตอร์ที่เข้าถึงได้ของ UART ทั้งหมด (อินพุตและเอาต์พุต) กลับไปยังโฮสต์ผ่าน UART โดยปกติคำสั่งนี้จะออกโดยสคริปต์ uart_regs.py เท่านั้น
เมื่อได้รับคำสั่งนี้ FPGA จะตอบสนองโดยส่งเนื้อหาของรีจิสเตอร์ทั้งหมดกลับไปยังโฮสต์ ขั้นแรก สัญญาณอินพุต จากนั้นสัญญาณเอาท์พุต หากความยาวรวมกันไม่เป็นทวีคูณของ 8 บิต บิตล่างของไบต์สุดท้ายจะถูกเติมด้วยศูนย์
ลำดับการเขียนจะเริ่มต้นด้วยไบต์ START_WRITE และสิ้นสุดด้วยไบต์ END_WRITE ไบต์ใดๆ ระหว่างไบต์เหล่านี้จะถือเป็นไบต์ข้อมูล หากไบต์ข้อมูลใดๆ มีค่าเท่ากับอักขระควบคุม ไบต์ข้อมูลนั้นจะต้องถูกเอสเคป ซึ่งหมายความว่าจะต้องส่งอักขระ ESCAPE เพิ่มเติมก่อนไบต์ข้อมูลเพื่อระบุว่าเป็นข้อมูลจริง
หาก START_WRITE ที่ไม่ได้ใช้ Escape มาถึงที่ใดก็ได้ในสตรีมไบต์ จะถือเป็นจุดเริ่มต้นของลำดับการเขียน โมดูล uart_regs_backend ใช้ข้อมูลนี้เพื่อซิงโครไนซ์ใหม่ในกรณีที่การสื่อสารไม่ซิงค์กัน

gen_uart_regs.py

  • นี่คือสคริปต์ที่คุณต้องเริ่มต้นด้วยเพื่อสร้างอินเทอร์เฟซ ด้านล่างนี้เป็นภาพหน้าจอของเมนูวิธีใช้ที่คุณสามารถเรียกใช้ได้: python gen_uart_regs.py -hเครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz-UART รูปที่ 1
  • ในการสร้างอินเทอร์เฟซแบบกำหนดเอง คุณต้องรันสคริปต์โดยให้รีจิสเตอร์ที่ควบคุม UART แต่ละรายการที่คุณต้องการแสดงเป็นอาร์กิวเมนต์ได้ ประเภทที่ใช้ได้ ได้แก่ std_logic, std_logic_vector, unsigned และ signed
  • โหมดเริ่มต้น (ทิศทาง) อยู่ในและประเภทเริ่มต้นคือ std_logic_vector เว้นแต่ว่าการลงทะเบียนจะมีความยาว: 1 จากนั้น จะใช้ค่าเริ่มต้นเป็น std_logic
  • ดังนั้น หากคุณต้องการสร้างสัญญาณอินพุต std_logic คุณสามารถใช้อาร์กิวเมนต์ใดก็ได้เหล่านี้:
  • my_sl=1
  • my_sl=1:ใน
  • my_sl=1:in:std_logic
  • ตัวแปรข้างต้นทั้งหมดจะส่งผลให้สคริปต์สร้างสัญญาณที่เข้าถึง UART ได้:เครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz-UART รูปที่ 2
  • ให้รันสคริปต์ที่มีอาร์กิวเมนต์เพื่อสร้างอินเทอร์เฟซที่มีรีจิสเตอร์หลายตัวที่มีทิศทาง ความยาว และประเภทต่างกันเครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz-UART รูปที่ 3

สร้างขึ้น files

  • การรันสคริปต์ gen_uart_regs.py ที่ประสบความสำเร็จจะสร้างโฟลเดอร์เอาต์พุตชื่อที่สร้างด้วยทั้งสาม fileดังรายการด้านล่าง หากมีอยู่แล้ว พวกเขาจะถูกเขียนทับ
  • สร้าง/uart_regs.vhd
  • สร้าง/uart_regs.py
  • สร้าง/instantiation_template.vho
  • uart_regs.vhd
  • นี่คือโมดูลอินเทอร์เฟซแบบกำหนดเองที่สร้างโดยสคริปต์ คุณต้องสร้างอินสแตนซ์ในการออกแบบของคุณ โดยที่สามารถเข้าถึงรีจิสเตอร์ที่คุณต้องการควบคุมโดยใช้ UART
  • ทุกอย่างที่อยู่เหนือส่วน "- การลงทะเบียนที่เข้าถึง UART" จะเหมือนกันสำหรับทุกโมดูล uart_regs ในขณะที่องค์ประกอบของสัญญาณพอร์ตด้านล่างบรรทัดนั้นขึ้นอยู่กับอาร์กิวเมนต์ที่กำหนดให้กับสคริปต์ตัวสร้าง
  • รายการด้านล่างแสดงเอนทิตีสำหรับโมดูล uart_regs ที่เป็นผลลัพธ์จากคำสั่งสร้าง เช่นampไฟล์ที่แสดงในส่วน gen_uart_regs.pyเครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz-UART รูปที่ 4
  • คุณไม่จำเป็นต้องซิงโครไนซ์สัญญาณ uart_rx เนื่องจากสัญญาณดังกล่าวได้รับการจัดการใน uart_rx โมดูล.
  • เมื่อโมดูลได้รับคำขออ่าน โมดูลจะจับค่าของสัญญาณอินพุตและเอาต์พุตทั้งหมดภายในรอบสัญญาณนาฬิกาปัจจุบัน สแน็ปช็อตทันทีจะถูกส่งไปยังโฮสต์ผ่าน UART
  • เมื่อการเขียนเกิดขึ้น รีจิสเตอร์เอาต์พุตทั้งหมดจะถูกอัพเดตด้วยค่าใหม่ภายในรอบสัญญาณนาฬิกาเดียวกัน ไม่สามารถเปลี่ยนค่าสัญญาณเอาท์พุตทีละค่าได้
  • อย่างไรก็ตาม สคริปต์ uart_regs.py อนุญาตให้ผู้ใช้อัปเดตเฉพาะเอาต์พุตที่เลือกโดยการอ่านค่าปัจจุบันของรีจิสเตอร์ทั้งหมดก่อน จากนั้นจะเขียนกลับค่าทั้งหมด รวมถึงค่าที่อัปเดตด้วย
  • uart_regs.py
  • สร้าง/uart_regs.py file ถูกสร้างขึ้นพร้อมกับโมดูล uart_regs VHDL และมีข้อมูลการลงทะเบียนที่กำหนดเองในส่วนหัวของ file. ด้วยสคริปต์นี้ คุณสามารถอ่านหรือเขียนไปยังรีจิสเตอร์ที่คุณกำหนดเองได้อย่างง่ายดาย

เมนูช่วยเหลือ

  • พิมพ์ python uart_regs.py -h เพื่อพิมพ์เมนูช่วยเหลือ:เครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz-UART รูปที่ 5

การตั้งค่าพอร์ต UART

  • สคริปต์มีตัวเลือกในการตั้งค่าพอร์ต UART โดยใช้สวิตช์ -c ซึ่งใช้ได้กับทั้ง Windows และ Linux ให้ตั้งค่าเป็นพอร์ตใดพอร์ตหนึ่งที่มีให้ใช้งานตามที่แสดงไว้ในเมนูวิธีใช้ หากต้องการตั้งค่าพอร์ตเริ่มต้น คุณสามารถแก้ไขตัวแปร UART_PORT ในสคริปต์ uart_regs.py ได้เช่นกัน

ทะเบียนรายการ

  • ข้อมูลเกี่ยวกับการแมปรีจิสเตอร์จะถูกวางไว้ในส่วนหัวของสคริปต์ uart_regs.py โดยสคริปต์ gen_uart_regs.py คุณสามารถแสดงรายการรีจิสเตอร์ที่พร้อมใช้งานได้โดยใช้สวิตช์ -l ดังที่แสดงด้านล่าง นี่คือคำสั่งภายในเครื่องและจะไม่โต้ตอบกับ FPGA เป้าหมายเครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz-UART รูปที่ 6

การเขียนเพื่อลงทะเบียน

  • คุณสามารถเขียนไปยังรีจิสเตอร์โหมดออกใดๆ ได้โดยใช้สวิตช์ -w กรอกชื่อรีจิสเตอร์ตามด้วย “=” และค่าที่กำหนดเป็นค่าไบนารี เลขฐานสิบหก หรือทศนิยม ดังที่แสดงด้านล่างเครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz-UART รูปที่ 7
  • โปรดทราบว่าการใช้งาน VHDL ต้องใช้สคริปต์ในการเขียนรีจิสเตอร์เอาต์พุตทั้งหมดพร้อมกัน ดังนั้น หากคุณไม่ได้ระบุชุดรีจิสเตอร์เอาต์พุตที่สมบูรณ์ สคริปต์จะทำการอ่านจาก FPGA เป้าหมายก่อน จากนั้นจึงใช้ค่าเหล่านั้นสำหรับค่าที่ขาดหายไป ผลลัพธ์คือ เฉพาะรีจิสเตอร์ที่ระบุเท่านั้นที่จะเปลี่ยนแปลง
  • เมื่อคุณทำการเขียน รีจิสเตอร์ที่ระบุทั้งหมดจะเปลี่ยนในระหว่างรอบสัญญาณนาฬิกาเดียวกัน ไม่ใช่ทันทีที่ได้รับผ่าน UART

การอ่านทะเบียน

  • ใช้สวิตช์ -r เพื่ออ่านค่ารีจิสเตอร์ทั้งหมด ดังที่แสดงด้านล่าง ค่าที่ทำเครื่องหมายด้วยสีเหลืองคือค่าที่เราเปลี่ยนแปลงในการเขียนครั้งก่อน เช่นampleเครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz-UART รูปที่ 8
  • การอ่านทุกครั้งจะแสดงสแน็ปช็อตทันทีของรีจิสเตอร์อินพุตและเอาท์พุตทั้งหมด พวกเขาทั้งหมดเป็นampนำในช่วงรอบสัญญาณนาฬิกาเดียวกัน

การแก้จุดบกพร่อง

ใช้สวิตช์ -d กับสวิตช์อื่นๆ หากคุณต้องการดีบักโปรโตคอลการสื่อสาร จากนั้นสคริปต์จะพิมพ์ไบต์ที่ส่งและรับทั้งหมดและ tag หากเป็นอักขระควบคุม ดังที่แสดงด้านล่างเครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz-UART รูปที่ 9

การใช้อินเทอร์เฟซในสคริปต์ Python อื่น

  • สคริปต์ uart_regs.py มีคลาส UartRegs ที่คุณสามารถใช้เป็นอินเทอร์เฟซการสื่อสารในสคริปต์ Python ที่กำหนดเองอื่นๆ ได้อย่างง่ายดาย เพียงนำเข้าคลาส สร้างอ็อบเจ็กต์ของคลาสนั้น และเริ่มใช้วิธีการดังที่แสดงด้านล่างเครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz-UART รูปที่ 10
  • อ้างถึงเอกสารในโค้ด Python สำหรับวิธีการและคำอธิบายและประเภทค่าส่งคืน

Instantiation_template.vho

  • เทมเพลตการสร้างอินสแตนซ์จะถูกสร้างขึ้นพร้อมกับโมดูล uart_regs เพื่อความสะดวกของคุณ เพื่อประหยัดเวลาในการเขียนโค้ด คุณสามารถคัดลอกการสร้างอินสแตนซ์ของโมดูลและการประกาศสัญญาณลงในการออกแบบของคุณได้เครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz-UART รูปที่ 11เครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz-UART รูปที่ 12

RTL แบบคงที่ files

  • คุณต้องมีสิ่งต่อไปนี้ fileในโปรเจ็กต์ VHDL ของคุณเพื่อให้คอมไพล์เป็นไลบรารีเดียวกันกับโมดูล uart_regs:
  • rtl/uart_regs_backend.vhd
  • rtl/uart_rx.vhd
  • rtl/uart_tx.vhd
  • โมดูล uart_regs_backend ใช้เครื่องสถานะจำกัดที่ตอกบัตรเข้าและออกข้อมูลการลงทะเบียน ใช้โมดูล uart_rx และ uart_tx เพื่อจัดการการสื่อสาร UART กับโฮสต์

โครงการสาธิต

  • มีโครงการสาธิตสามโครงการรวมอยู่ใน Zip file. ช่วยให้คุณสามารถควบคุมอุปกรณ์ต่อพ่วงบนบอร์ดต่างๆ รวมถึงรีจิสเตอร์ภายในที่ใหญ่กว่าสองสามตัวได้
  • โฟลเดอร์สาธิตประกอบด้วย uart_regs.vhd และ uart_regs.py ที่สร้างไว้ล่วงหน้า fileทำขึ้นเพื่อการออกแบบเหล่านั้นโดยเฉพาะ

ตาข่าย iCEstick

  • โฟลเดอร์ demo/icecube2_icestick มีการดำเนินการสาธิตการเข้าถึงการลงทะเบียนสำหรับบอร์ด Lattice iCEstick FPGA
  • หากต้องการดำเนินการตามขั้นตอนการใช้งาน ให้เปิด demo/lattice_icestick/icecube2_proj/uart_regs_sbt.project file ในซอฟต์แวร์ออกแบบ Lattice iCEcube2
  • หลังจากโหลดโปรเจ็กต์ใน iCEcube2 GUI แล้ว คลิก Tools→Run All เพื่อสร้างบิตแมปการเขียนโปรแกรม file.
  • คุณสามารถใช้เครื่องมือ Lattice Diamond Programmer Standalone เพื่อกำหนดค่า FPGA ด้วยบิตแมปที่สร้างขึ้น file. เมื่อ Diamond Programmer เปิดขึ้น ให้คลิก Open an existing programmer project ในกล่องโต้ตอบต้อนรับ
  • เลือกโครงการ file พบใน Zip: demo/lattice_icestick/diamond_programmer_project.xcf แล้วคลิกตกลงเครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz-UART รูปที่ 13
  • หลังจากโหลดโปรเจ็กต์แล้ว ให้คลิกจุดสามจุดใน File คอลัมน์ชื่อตามที่แสดงด้านบน เรียกดูเพื่อเลือกบิตแมป file ที่คุณสร้างใน iCEcube2
  • เดโม่/lattice_icestick/icecube2_proj/uart_regs_Implmnt/sbt/outputs/bitmap/top_icestick_bitmap.bin
  • สุดท้าย เมื่อเสียบบอร์ด iCEstick เข้ากับพอร์ต USB บนคอมพิวเตอร์ของคุณ ให้เลือก Design → Program เพื่อตั้งโปรแกรมแฟลช SPI และกำหนดค่า FPGA
  • ขณะนี้คุณสามารถดำเนินการอ่านและเขียนรีจิสเตอร์ได้โดยใช้สคริปต์ demo/lattice_icestick/uart_regs.py ตามที่อธิบายไว้ในส่วน uart_regs.py

Xilinx ดิจิเลนท์ อาร์ตี้ A7-35T

  • คุณสามารถดูการใช้งานสาธิตสำหรับชุดประเมินผล Artix-7 35T Arty FPGA ได้ในโฟลเดอร์ demo/arty_a7_35
  • เปิด Vivado แล้วไปที่ไฟล์ที่แยกออกมา fileกำลังใช้คอนโซล Tcl ที่ด้านล่างของอินเทอร์เฟซ GUI พิมพ์คำสั่งนี้เพื่อเข้าสู่โฟลเดอร์โครงการสาธิต:
  • ซีดี /สาธิต/อาร์ตี้_a7_35/วีวาโด_โปรเจกต์/
  • ดำเนินการสคริปต์ create_vivado_proj.tcl Tcl เพื่อสร้างโปรเจ็กต์ Vivado ใหม่:
  • ที่มา ./create_vivado_proj.tcl
  • คลิกสร้าง Bitstream ในแถบด้านข้างเพื่อดำเนินการตามขั้นตอนการใช้งานทั้งหมด และสร้างบิตสตรีมการเขียนโปรแกรม file.
  • สุดท้าย คลิก Open Hardware Manager และตั้งโปรแกรม FPGA ผ่าน GUI
  • ตอนนี้คุณสามารถอ่านและเขียนรีจิสเตอร์ได้โดยใช้สคริปต์ demo/arty_a7_35/uart_regs.py ตามที่อธิบายไว้ในส่วน uart_regs.py

Xilinx ดิจิเลนท์ อาร์ตี้ S7-50

  • คุณสามารถดูการใช้งานสาธิตสำหรับ Arty S7: Spartan-7 FPGA development board ได้ในโฟลเดอร์ demo/arty_s7_50
  • เปิด Vivado แล้วไปที่ไฟล์ที่แยกออกมา fileกำลังใช้คอนโซล Tcl ที่ด้านล่างของอินเทอร์เฟซ GUI พิมพ์คำสั่งนี้เพื่อเข้าสู่โฟลเดอร์โครงการสาธิต:
  • ซีดี /สาธิต/อาร์ตี้_s7_50/vivado_proj/
  • ดำเนินการสคริปต์ create_vivado_proj.tcl Tcl เพื่อสร้างโปรเจ็กต์ Vivado ใหม่:
  • ที่มา ./create_vivado_proj.tcl
  • คลิกสร้าง Bitstream ในแถบด้านข้างเพื่อดำเนินการตามขั้นตอนการใช้งานทั้งหมด และสร้างบิตสตรีมการเขียนโปรแกรม file.
  • สุดท้าย คลิก Open Hardware Manager และตั้งโปรแกรม FPGA ผ่าน GUI
  • ตอนนี้คุณสามารถอ่านและเขียนรีจิสเตอร์ได้โดยใช้สคริปต์ demo/arty_s7_50/uart_regs.py ตามที่อธิบายไว้ในส่วน uart_regs.py

การนำไปปฏิบัติ

  • ไม่มีข้อกำหนดการใช้งานเฉพาะ

ข้อจำกัด

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

ปัญหาที่ทราบ

  • คุณอาจต้องรีเซ็ตโมดูลก่อนจึงจะสามารถใช้งานได้ ขึ้นอยู่กับว่าสถาปัตยกรรม FPGA ของคุณรองรับค่ารีจิสเตอร์เริ่มต้นหรือไม่

ข้อมูลเพิ่มเติม

คำถามที่พบบ่อย

ถาม: จุดประสงค์ของเครื่องสร้างอินเทอร์เฟซการทดสอบ UART คืออะไร

A: เครื่องสร้างอินเทอร์เฟซการทดสอบ UART ช่วยให้สามารถสร้างอินเทอร์เฟซแบบกำหนดเองเพื่อโต้ตอบกับค่ารีจิสเตอร์ FPGA โดยใช้การสื่อสาร UART

ถาม: ฉันจะติดตั้งแพ็คเกจ Pyserial ได้อย่างไร

A: คุณสามารถติดตั้ง Pyserial ผ่าน Pip ได้โดยใช้คำสั่ง: pip install pyserial

เอกสาร / แหล่งข้อมูล

เครื่องกำเนิดอินเทอร์เฟซการทดสอบ VHDLwhiz UART [พีดีเอฟ] คู่มือการใช้งาน
เครื่องกำเนิดอินเทอร์เฟซการทดสอบ UART เครื่องกำเนิดอินเทอร์เฟซการทดสอบ เครื่องกำเนิดอินเทอร์เฟซ เครื่องกำเนิดไฟฟ้า

อ้างอิง

ฝากความคิดเห็น

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องกรอกข้อมูลมีเครื่องหมาย *