สารบัญ:

FPGA Cyclone IV DueProLogic ควบคุมกล้อง Raspberry Pi: 5 ขั้นตอน
FPGA Cyclone IV DueProLogic ควบคุมกล้อง Raspberry Pi: 5 ขั้นตอน

วีดีโอ: FPGA Cyclone IV DueProLogic ควบคุมกล้อง Raspberry Pi: 5 ขั้นตอน

วีดีโอ: FPGA Cyclone IV DueProLogic ควบคุมกล้อง Raspberry Pi: 5 ขั้นตอน
วีดีโอ: Play SNES & NES Cartridges On A Raspberry Pi? WHAT?! 2024, พฤศจิกายน
Anonim
FPGA Cyclone IV DueProLogic ควบคุมกล้อง Raspberry Pi
FPGA Cyclone IV DueProLogic ควบคุมกล้อง Raspberry Pi

แม้ว่า FPGA DueProLogic จะได้รับการออกแบบอย่างเป็นทางการสำหรับ Arduino แต่เราจะทำให้ FPGA และ Raspberry Pi 4B สามารถสื่อสารกันได้

มีการใช้งานสามงานในบทช่วยสอนนี้:

(A) กดปุ่มสองปุ่มพร้อมกันบน FPGA เพื่อพลิกมุมกล้อง RPi

(B) Raspberry Pi 4B ควบคุมวงจร LED ภายนอกของ FPGA

(C) ถ่ายทอดสดกล้อง Raspberry Pi บนเบราว์เซอร์ผ่าน WiFi

ขั้นตอนที่ 1: สร้างวงจรอิเล็กทรอนิกส์

ขั้นตอนที่ 2: แก้ไขรหัส Verilog

แก้ไขรหัส Verilog
แก้ไขรหัส Verilog
แก้ไขรหัส Verilog
แก้ไขรหัส Verilog

เมื่อคุณซื้อ FPGA DueProLogic คุณควรได้รับดีวีดี หลังจากที่คุณเปิด "Projects_HDL" คุณจะเห็นไฟล์โค้ด HDL ดั้งเดิม หลังจากที่คุณตั้งค่าพินแพลนเนอร์แล้ว ให้เพิ่มโค้ดที่ไฮไลท์ตามที่แสดงในหัวข้อ 2A, 2B, 2C และ 2D

2A: หากต้องการเปิดใช้งานปุ่มกด คุณต้องใช้รหัสนี้

// สวิตช์ปุ่มกด

สายอินพุต UBA,

สายเข้า UBB

ในการสื่อสารกับ Raspberry Pi คุณต้องเพิ่มสิ่งเหล่านี้

reg sel_send; // เปิดใช้งาน Raspberry pi

เร็กคอร์ด; //รับจาก raspberry pi

2B: ในการกำหนดค่าให้กับพอร์ต คุณควรแก้ไขรหัสตามนั้น

กำหนด XIO_1[3] = start_stop_cntrl;

กำหนด XIO_2[2] = rece; //เอาต์พุตสูงหรือต่ำในวงจร LED

กำหนด XIO_2[3] = ~UBA; //กดปุ่ม

กำหนด XIO_2[4] = UBB; //กดปุ่ม

กำหนด XIO_2[5] = sel_send; // FPGA ส่งสัญญาณไปยังราสเบอร์รี่ pi

กำหนด sel_read= XIO_5[1]; //FPGA รับสัญญาณจากราสเบอร์รี่ pi

กำหนด c_enable = XIO_5[2]; //XIO_5 -- UB57 -- D17

กำหนด LEDExt = XIO_5[5];

2C: หากกดปุ่มสองปุ่มพร้อมกัน FPGA จะส่งเอาต์พุตสูงไปยัง Raspberry Pi

เสมอ @(sel_send หรือ UBB หรือ UBA) //ส่งไปที่ RPi

เริ่ม

ถ้า (UBB == 1'b0 && UBA == 1'b0)

sel_send = 1'b1;

อื่น

sel_send = 1'b0;

จบ

2D: FPGA อ่านสัญญาณจาก Raspberry Pi ด้วยความถี่สัญญาณนาฬิกา 66MHz พอร์ต XIO_2[2] เชื่อมโยงกับ 'rece'

@(sel_read) เสมอ //read pi

เริ่ม

ถ้า (sel_read == 1'b1)

Rece = 1'b0;

อื่น

Rece = 1'b1;

จบ

ขั้นตอนที่ 3: อัปโหลดรหัส Verilog

อัปโหลดรหัส Verilog
อัปโหลดรหัส Verilog

จากนั้นอัปโหลดไฟล์ pof ที่คอมไพล์ไปยัง FPGA หากตรวจไม่พบฮาร์ดแวร์โดยอัตโนมัติ ให้คลิก "การตั้งค่าฮาร์ดแวร์" เพื่อแก้ไขด้วยตนเอง

ขั้นตอนที่ 4: อัปโหลดรหัส Raspberry Pi

เส้นที่ไฮไลต์ช่วยให้ FPGA สามารถสื่อสารกับ Raspberry Pi

รหัส Raspberry Pi แบบเต็มสำหรับโครงการนี้

A = GPIO.input(พิน) #read FPGAprint(A);

ถ้า(A==1):

camera.rotation = 0

GPIO.output(18, GPIO. LOW) #ส่งไปที่FPGA

ถ้า(A==0):

camera.rotation = 180

GPIO.output(18, GPIO. HIGH) #ส่งไปที่FPGA

ขั้นตอนที่ 5: มาลองดูกัน

Image
Image

เปิดเบราว์เซอร์ของคุณและพิมพ์ที่อยู่ IP ของคุณเช่น 192.168.xx.xxx:8000.

ท้ายที่สุดระบบควรใช้งานได้!

แนะนำ: