MakerGram Logo

    MakerGram

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Tags
    • Users
    • Groups

    help me to find a FPGA dev board for getting started suggest me a cheap and best dev board?

    General Discussion
    3
    3
    628
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • saheen_palayi
      saheen_palayi last edited by

      i'm new to the FPGA world ,looking for a fpga dev board to getting started ,I hope u guys will help me to find out ,thanks

      1 Reply Last reply Reply Quote 1
      • salmanfaris
        salmanfaris last edited by salmanfaris

        Hi @saheen_palayi , It depends on what exactly you want to do with the FPGA kit. and don't have much experience with FPGA, but I can help you Lattice iCEstick Evaluation Kit to get started.

        Lattice iCEstick Evaluation Kit
        It's available at fablab Kochi and Trivandrum if you want to try it out without buying.

        alt text alt text

        Features
        The iCEstick Evaluation Kit includes:
        • iCEstick Evaluation Board – features the following on-board components
        – High-performance, low-power iCE40HX1K FPGA
        – FTDI 2232H USB device allows iCE device programming and UART interface to a PC
        – Vishay TFDU4101 IrDA transceiver
        – Five user LEDs
        – 2 x 6 position Diligent PmodTM compatible connector enables many other peripheral connections
        – Discera 12Mhz MEMS oscillator
        – Micron 32Mbit N25Q32 SPI flash
        – Supported by Lattice iCEcube2™ design software
        – USB connector provides the power supply
        – 16 LVCMOS/LVTTL (3.3V) digital I/O connections on 0.1” through-hole connections
        • Pre-loaded demo design – the kit includes the pre-loaded demo design that flashes the on-board LEDs in a
        clockwise pattern.
        • USB connector – provides communication and debug port via a USB-to-RS-232 physical channel and programming interface to the PC.

        resources :

        • https://www.allaboutcircuits.com/technical-articles/fpga-tutorial-step-1-the-development-environment-and-hello-world/
        • https://numato.com/kb/learning-fpga-verilog-beginners-guide-part-1-introduction/
        • https://www.sparkfun.com/news/1203
        • https://www.quora.com/What-is-the-best-affordable-FPGA-dev-kit-for-a-starter
        1 Reply Last reply Reply Quote 1
        • G
          goran.mahovlic last edited by goran.mahovlic

          Our board is not cheapest possible, but has lots of things already onboard.
          ULX3S
          Board is also supported by opensource toolchain!
          For workshop material with our board you can check here:
          Workshop
          Price for 12F board is 75€ plus shipping.
          If you like it you can contact me at:
          ulx3s.fpga@gmail.com

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Recent Posts

          • R

            I am trying to set up a janus webrtc to stream an RTSP to an HTML page.
            I have followed the getting-started steps by Janus-gateway official github repo.

            Since I am new to web development. I do not understand how to host the Webrtc server. can anyone guide me to set up an HTML page that can display a video stream from an RTSP server using janus webrtc?

            • read more
          • @zainmuhammed Can try capturing the GPS when the device is starting the loop instead after joining the LoRaWAN and see?

            You can put the GPS value on top of the loop or setup function.

            Also, what kind of gateway are you using? Is it configured okay, OTA is done?

            • read more
          • @salmanfaris Today I tried after connecting a 18650 cell,
            WhatsApp Image 2024-04-12 at 10.40.06_c7d1947e.jpg WhatsApp Image 2024-04-12 at 10.40.05_897b8bb6.jpg
            Data getting in console after integration of both lora and gps.
            3f45cfe7-0061-4328-8c55-ef0a73385203-image.png
            here you can see that GPS value is 0,0. also in my previous post you can see that GPS value is not reading.
            Also the status LED is active after it is connected to the satellite.

            • read more
          • Hi @zainmuhammed ,

            Can you share the GPS and LoRa output when it’s working?

            Also can try capturing the GPS when the device is starting the loop instead after joining the LoRaWAN and see?

            Also make sure the device provides have enough to modules. The GPS need more power when you cold start.

            • read more
          • @zainmuhammed
            this is the code

            #include <Arduino.h> #include <U8x8lib.h> #include <TinyGPS++.h> #include <SoftwareSerial.h> static const int RXPin = 1, TXPin = 2; static const uint32_t GPSBaud = 9600; // The TinyGPS++ object TinyGPSPlus gps; // The serial connection to the GPS device SoftwareSerial ss(RXPin, TXPin); U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(/*reset=*/U8X8_PIN_NONE); // U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/*clock=*/ SCL, /*data=*/ SDA, /*reset=*/ U8X8_PIN_NONE); // OLEDs without Reset of the Display static char recv_buf[512]; static bool is_exist = false; static bool is_join = false; static int led = 0; static int at_send_check_response(char *p_ack, int timeout_ms, char *p_cmd, ...) { int ch; int num = 0; int index = 0; int startMillis = 0; va_list args; char cmd_buffer[256]; // Adjust the buffer size as needed memset(recv_buf, 0, sizeof(recv_buf)); va_start(args, p_cmd); vsprintf(cmd_buffer, p_cmd, args); // Format the command string Serial1.print(cmd_buffer); Serial.print(cmd_buffer); va_end(args); delay(200); startMillis = millis(); if (p_ack == NULL) { return 0; } do { while (Serial1.available() > 0) { ch = Serial1.read(); recv_buf[index++] = ch; Serial.print((char)ch); delay(2); } if (strstr(recv_buf, p_ack) != NULL) { return 1; } } while (millis() - startMillis < timeout_ms); return 0; } static void recv_prase(char *p_msg) { if (p_msg == NULL) { return; } char *p_start = NULL; int data = 0; int rssi = 0; int snr = 0; p_start = strstr(p_msg, "RX"); if (p_start && (1 == sscanf(p_start, "RX: \"%d\"\r\n", &data))) { Serial.println(data); u8x8.setCursor(2, 4); u8x8.print("led :"); led = !!data; u8x8.print(led); if (led) { digitalWrite(LED_BUILTIN, LOW); } else { digitalWrite(LED_BUILTIN, HIGH); } } p_start = strstr(p_msg, "RSSI"); if (p_start && (1 == sscanf(p_start, "RSSI %d,", &rssi))) { u8x8.setCursor(0, 6); u8x8.print(" "); u8x8.setCursor(2, 6); u8x8.print("rssi:"); u8x8.print(rssi); } p_start = strstr(p_msg, "SNR"); if (p_start && (1 == sscanf(p_start, "SNR %d", &snr))) { u8x8.setCursor(0, 7); u8x8.print(" "); u8x8.setCursor(2, 7); u8x8.print("snr :"); u8x8.print(snr); } } void setup(void) { u8x8.begin(); u8x8.setFlipMode(1); u8x8.setFont(u8x8_font_chroma48medium8_r); ss.begin(GPSBaud); Serial.begin(GPSBaud); pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); Serial1.begin(9600); Serial.print("E5 LORAWAN TEST\r\n"); u8x8.setCursor(0, 0); if (at_send_check_response("+AT: OK", 100, "AT\r\n")) { is_exist = true; at_send_check_response("+ID: DevEui", 1000, "AT+ID=DevEui,\"xxxxx\"\r\n"); // replace 'xxxxxxxxxxxxx' with your DevEui at_send_check_response("+ID: AppEui", 1000, "AT+ID=AppEui,\"xxxxxxx\"\r\n"); // replace 'xxxxxxxxxxxxx' with your AppEui at_send_check_response("+KEY: APPKEY", 1000, "AT+KEY=APPKEY,\"xxxxxxxxx\"\r\n"); // replace 'xxxxxxxxxxxxx' with your AppKey at_send_check_response("+ID: DevAddr", 1000, "AT+ID=DevAddr\r\n"); at_send_check_response("+ID: AppEui", 1000, "AT+ID\r\n"); at_send_check_response("+MODE: LWOTAA", 1000, "AT+MODE=LWOTAA\r\n"); at_send_check_response("+DR: IN865", 1000, "AT+DR=IN865\r\n"); // Change FREQ as per your location at_send_check_response("+CH: NUM", 1000, "AT+CH=NUM,0-2\r\n"); at_send_check_response("+CLASS: C", 1000, "AT+CLASS=A\r\n"); at_send_check_response("+PORT: 8", 1000, "AT+PORT=8\r\n"); delay(200); u8x8.setCursor(5, 0); u8x8.print("LoRaWAN"); is_join = true; } else { is_exist = false; Serial.print("No E5 module found.\r\n"); u8x8.setCursor(0, 1); u8x8.print("unfound E5 !"); } u8x8.setCursor(2, 4); u8x8.print("led :"); u8x8.print(led); } void loop(void) { if (is_exist) { int ret = 0; if (is_join) { ret = at_send_check_response("+JOIN: Network joined", 12000, "AT+JOIN\r\n"); if (ret) { is_join = false; } else { at_send_check_response("+ID: AppEui", 1000, "AT+ID\r\n"); Serial.print("JOIN failed!\r\n\r\n"); delay(5000); } } else { gps.encode(ss.read()); float a=gps.location.lat(); float b=gps.location.lng(); Serial.println(a); Serial.println(b); char cmd[128]; sprintf(cmd, "AT+CMSGHEX=\"%04X%04X\"\r\n", (float)a,(float)b); ret = at_send_check_response("Done", 5000, cmd); if (ret) { recv_prase(recv_buf); } else { Serial.print("Send failed!\r\n\r\n"); } delay(5000); } } else { delay(1000); } }

            9135d5d3-6277-4c60-81df-a2acac65c93d-image.png

            • read more
          By MakerGram | A XiStart Initiative | Built with ♥ NodeBB
          Copyright © 2023 MakerGram, All rights reserved.
          Privacy Policy | Terms & Conditions | Disclaimer | Code of Conduct