thảo luận Lập trình nhúng với FPGA

Hellooo

Junior Member
Nếu lập trình nhúng với ARM như stm32 hay 1 số kit như esp32,... thì chúng ta đã quá quen thuộc khi ở trên ghế nhà trường rồi
Nhưng lập trình nhúng trên nền tảng FPGA ( SoC ) đã bác nào làm chưa? Mình vào đây trao đổi học hỏi
 
Em đã từng thử nạp một cái cnn lên board fpga basys3, code tham khảo github, cần học từ căn bản đến nắm rõ cách xử lý tín hiệu với ngôn ngữ verilog
 
Nếu lập trình nhúng với ARM như stm32 hay 1 số kit như esp32,... thì chúng ta đã quá quen thuộc khi ở trên ghế nhà trường rồi
Nhưng lập trình nhúng trên nền tảng FPGA ( SoC ) đã bác nào làm chưa? Mình vào đây trao đổi học hỏi
FPGA với SoC là 2 thứ khác nhau mở ngoặc đóng ngoặc gì vậy
 
Trên trường em đang dạy lập trình nhúng trên board Arty, cũng chỉ mấy cái đơn giản kiểu GPIO, UART. Kì này em mới biết FPGA, nhưng mà em vẫn chưa hiểu dùng HDL hay thế sao lại code nhúng lên FPGA nhỉ, thế sao không dùng trên vi điều khiển mà dùng FPGA làm gì cho đắt?
 
Trên trường em đang dạy lập trình nhúng trên board Arty, cũng chỉ mấy cái đơn giản kiểu GPIO, UART. Kì này em mới biết FPGA, nhưng mà em vẫn chưa hiểu dùng HDL hay thế sao lại code nhúng lên FPGA nhỉ, thế sao không dùng trên vi điều khiển mà dùng FPGA làm gì cho đắt?
FPGA theo như mình hiểu thì nó thường được dùng trong mấy trường hợp như thế này
1. bác muốn phát triển chip và cần 1 phương thức để prototype/debug thì fpga là 1 lựa chọn không tồi, fix hết ba cái lỗi logic rồi thì order fab nó đóng chip
2. cũng như trên, bạn thiết kế 1 con asic chỉ chạy chuyên 1 nhiệm vụ, nhưng mà vì số lượng sản xuất nhỏ < 1000 con nên bạn chơi luôn fpga cho nó phẻ (trường hợp này dễ thấy ở những dòng card chuyên dụng như sound phòng thu của bọn lynx, rme... hay xài fpga làm chíp xử lý âm thanh....)

theo quan điểm của mình thì nếu chỉ xử lý thuần uart hay gpio thì vi điều khiển ngon hơn vì mấy cái ngoại vi đấy vi điều khiển đã có rồi, nhưng nếu bạn cần tốc độ xử lý cho một nhóm tác vụ chuyên biệt thì fpga + code sẽ cho tốc độ ngon hơn vi điều khiển + code app
 
FPGA theo như mình hiểu thì nó thường được dùng trong mấy trường hợp như thế này
1. bác muốn phát triển chip và cần 1 phương thức để prototype/debug thì fpga là 1 lựa chọn không tồi, fix hết ba cái lỗi logic rồi thì order fab nó đóng chip
2. cũng như trên, bạn thiết kế 1 con asic chỉ chạy chuyên 1 nhiệm vụ, nhưng mà vì số lượng sản xuất nhỏ < 1000 con nên bạn chơi luôn fpga cho nó phẻ (trường hợp này dễ thấy ở những dòng card chuyên dụng như sound phòng thu của bọn lynx, rme... hay xài fpga làm chíp xử lý âm thanh....)

theo quan điểm của mình thì nếu chỉ xử lý thuần uart hay gpio thì vi điều khiển ngon hơn vì mấy cái ngoại vi đấy vi điều khiển đã có rồi, nhưng nếu bạn cần tốc độ xử lý cho một nhóm tác vụ chuyên biệt thì fpga + code sẽ cho tốc độ ngon hơn vi điều khiển + code app
Hợp lý, e đọc trong sách rồi mà k link ra
có course nào dạy FPGA từ beginner tới intermediate ổn ko mấy bác
E học một khoá VHDL trên Udemy với đọc quyển Getting Started With FPGA, thấy cũng dễ hiểu
 
Giờ mới đang học uart,i2c,spi... mà mấy bác đã master hết rồi hả, e hỏi chút, e đang học code giao tiếp giữa 2 bên theo phong cách tính delay cho từng chu kì để cho SDA và SCL nên xuống rồi dựa vào đó để lấy giá trị, sau này dự án chính có phải code theo phong cách đó ko ? hay bên hardware hỗ trợ cách tính delay từng chu kỳ
 
FPGA với SoC là 2 thứ khác nhau mở ngoặc đóng ngoặc gì vậy
FPGA bây giờ đa phần là tích hợp, không chỉ soc mà multi soc, phần mềm nhúng sẽ làm trên 2 nền tảng sau. Ai trong lĩnh vực này nói thế người ta đều hiểu chứ mỗi fpga thì lập trình nhúng kiểu gì được nhỉ?
Không biết thế hiện cái gì ở đây vậy :LOL:
 
Giờ mới đang học uart,i2c,spi... mà mấy bác đã master hết rồi hả, e hỏi chút, e đang học code giao tiếp giữa 2 bên theo phong cách tính delay cho từng chu kì để cho SDA và SCL nên xuống rồi dựa vào đó để lấy giá trị, sau này dự án chính có phải code theo phong cách đó ko ? hay bên hardware hỗ trợ cách tính delay từng chu kỳ
như đợt trước mình làm thì chơi kiểu setup DMA cho SPI, fill data zô DMA buffer rồi kêu nó gửi, trong lúc nó gửi thì poll cái thanh ghi trạng thái của DMA, thanh ghi nhảy thì chui vào đọc vùng DMA để lấy luôn dữ liệu nhận nếu cóa.
 
như đợt trước mình làm thì chơi kiểu setup DMA cho SPI, fill data zô DMA buffer rồi kêu nó gửi, trong lúc nó gửi thì poll cái thanh ghi trạng thái của DMA, thanh ghi nhảy thì chui vào đọc vùng DMA để lấy luôn dữ liệu nhận nếu cóa.
Vậy là hw nó hỗ trợ tính chu kì và thời điểm cho mình rồi đúng k bác ? Hiện tại mình đang phải tính chi kì, đúng điểm nên cao của Clock thì mới nhặt dữ liệu ở bên dây Data. Tính toán hơi phưc tạp
 
Vậy là hw nó hỗ trợ tính chu kì và thời điểm cho mình rồi đúng k bác ? Hiện tại mình đang phải tính chi kì, đúng điểm nên cao của Clock thì mới nhặt dữ liệu ở bên dây Data. Tính toán hơi phưc tạp
thì khi mình xài DMA thì con DMA controller nó handle hết việc đó cho mình luôn, app chỉ còn mỗi vệc rung đùi ngồi chờ rung chuông vàng lấy đồ thôi.
nếu MCU bác xài không hỗ trợ DMA thì đúng là phải ngồi tính chu kỳ xung để đọc dữ liệu cho đúng.
 
Back
Top