# veryVerilog **Repository Path**: MicrochipTech/veryVerilog ## Basic Information - **Project Name**: veryVerilog - **Description**: Learn Verilog basics the easy way with the world's smallest FPGA. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: apshu-patch-1 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-23 - **Last Updated**: 2026-06-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # veryVerilog veryVerilog enables an easy way to program PICs from family - **PIC16F131xy** - **PIC16F132xy** - **PIC16F180xy** over a Web Browser without the need to install any software using a PIC as a USB HiD device. The project is based on 3 parts: - USB-HID PCB (hardware) - USB-HID Hex File (firmware) - Web Page to flash Hex files a PIC device attached to the hardware The PCB looks like this and is based on a [**PIC16F1455**](https://www.microchip.com/en-us/product/pic16f1455) . The [**PIC16F1455**](https://www.microchip.com/en-us/product/pic16f1455) needs a [**custom firmware**](/firmware/hex/U1_PIC16F1455_v1.20.hex) to perform as ICSP programmer. ![PCB](/doc/images/pcb.png) The IC on the left-hand side is the [**PIC16F1455**](https://www.microchip.com/en-us/product/pic16f1455)-I/P and IC on the right-hand side is the miniFPGA ([**PIC16F13145**](https://www.microchip.com/en-us/product/pic16f13145)-I/P) to be programmed. # Program a PIC in 4 Steps It is that easy: ## 1. Insert the Hardware Plug the miniFPGA dongle in your computer. ## 2. Click the Web Page Open the Web Page: [https://microchiptech.github.io/veryVerilog](https://microchiptech.github.io/veryVerilog/). You will see the veryVerilog Web Page: ![Web1](/doc/images/web1.png) ## 3. Connect to Programmer Click the button "Connect to Programmer" and select the miniFPGA device: ![Web2](/doc/images/web2.png) If you have multiple programmers connected, click "identify Programmer" and the LEDs of the connected board will blink for about 2 seconds. The device is recognized and the Web Page displays information about the connected PIC and the identification of the program already flashed on the device (User Id) ![Web3](/doc/images/web3.png) ## 4. Drag and Drop Drag a HEX file on the *"Drag and Drop"* area and the program will be transfered automatically to the PIC. ![Web4](/doc/images/web4.png) Alternatively, you can click the **"Browse for HEX file"** button to select a HEX file from your file system. This is particularly useful when working with IDEs where you can copy and paste file paths. Have fun! ## Additional Features ### Reset Target Device After connecting to the programmer, a **"Reset Target"** button becomes available. Clicking this button will reset the target PIC. ### Device Detection When you connect to a programmer: - If the device is **recognized**, the web page displays the PIC model name (e.g., "PIC16F13145") and its User ID - If the device is **not recognized** or reads an invalid ID (like 0x0000), the page will display: **"Unknown PIC with DEVID 0x[hex_value]"** along with the actual device ID that was read This helps in debugging connectivity issues or identifying when an unsupported PIC is connected. **Tip:** Click on the **UserId** display to open a detailed information window showing: - **MCU Parameters** - Device ID, Revision ID, Memory sizes (ERSIZ, WLSIZ, URSIZ, EESIZ), Program Counter size (PCNT), and other device-specific information - **Programmer Parameters** - Hardware UART baud rate and other programmer settings ### Reading Memory Regions After connecting to the programmer, you can read the entire contents of the target PIC device: 1. Click the **Settings** dropdown (split button next to "Identify Programmer") 2. Select **"Read Device"** from the menu 3. The device memory will be read and automatically displayed in a modal window The memory viewer organizes data into collapsible sections: - **Program Flash** - The main program memory (displayed in rows of 16 words) - **EEPROM** - Data EEPROM memory (if available on the device, displayed in rows of 8 bytes) - **UserId** - User ID locations (displayed in rows of 4 words) - **Config Words** - Configuration bits You can also access previously read memory using the **"Show Memory"** option without reading the device again. This is useful for comparing data or reviewing what was last read from the device. ### Programming Settings The **Settings** dropdown provides options to customize which memory regions are programmed and whether verification is performed: **Default Behavior:** - All memory regions are programmed: **Program** (Flash), **EEPROM**, **UserId**, and **Config Bits** - After programming, the code is automatically **verified** to ensure it was written correctly **Customizing Memory Regions:** Click the **Settings** dropdown to access programming options. You can selectively choose which memory regions to program by checking/unchecking: - **Program** - Main program flash memory - **EEPROM** - Data EEPROM memory (if available on the device) - **UserId** - User ID locations - **Config Bits** - Configuration bits **Verification:** - The **Verify** option (enabled by default) checks that the programmed memory matches the expected values - This ensures programming integrity but may increase programming time slightly - You can disable verification if faster programming is needed, though this is not recommended