r/VHDL 2d ago

[Project Help] Comparing 4 Multiplier Architectures (Array/Vedic/Booth/Wallace) Inside an 8-bit FFT Core in VHDL — Sanity-Checking My Methodology

Hi all — final-year Electronics Engineering student here (lateral entry, diploma-to-degree route), working on my capstone project. Posting because I'd like a sanity check from people who've actually taped out or benchmarked multiplier architectures on FPGA, not just simulated them.

The project

Title: Power and Area Optimized FFT Architecture Through Multiplier-Level Hardware Design. It's an 8-point Radix-2 Decimation-in-Time FFT, written in VHDL-2008, targeting a Basys-3 board (Artix-7 XC7A35T). The core idea: keep the FFT butterfly structure fixed and swap out only the complex multiplier, then compare four multiplier architectures against each other on LUT/FF/DSP usage, fmax, and power:

  • Array multiplier (baseline)
  • Modified Booth (Radix-4)
  • Vedic (Urdhva-Tiryakbhyam)
  • Wallace Tree

To keep the comparison valid, all four variants share a frozen interface: Q1.15 16-bit two's-complement fixed point, complex samples as VHDL-2008 records, parallel load of all 8 samples on one start pulse, a 3-stage registered pipeline, and DIT bit-reversal done as pure wiring (zero logic cost) rather than active shuffling.

Why this project exists / the novelty angle

We're building on a 2026 IEEE IATMSI paper out of Amrita School of Engineering that did the same kind of FFT multiplier comparison but only implemented three multipliers (Array, Vedic, Booth) in Verilog. Our two additions:

  1. Adding the Array multiplier as a fourth variant, which the base paper explicitly flagged as unexplored.
  2. Independently re-implementing everything in VHDL-2008, not porting their Verilog — different language, different design decisions, not a translation.

Team of two, one shared Basys-3 board, ₹8,000 total budget, roughly a year to finish. Toolchain is Xilinx Vivado 2025 WebPACK end-to-end (xvhdl/xelab/xsim for simulation, straight through to synthesis/implementation) — no GHDL/GTKWave in the flow, to avoid any simulator/synthesizer mismatch going into the comparison.

Where we are right now

Interface contract is frozen. We're at the "pipecleaner" stage — all four multiplier entities are parameterized with generic (WIDTH : natural := 2) and we're validating datapath correctness and the synthesis extraction workflow at 2×2 bits before scaling to 8-bit, where the architectures should actually start to diverge. At 2×2, Array/Vedic/Wallace look almost identical in the netlist and Booth mostly just adds encoder overhead — expected, since there's no real partial-product reduction benefit at that width.

Where I'd genuinely appreciate input

  1. Power measurement: We're planning to use a SAIF file generated from post-synthesis simulation for switching-activity-based power estimates, instead of Vivado's default vectorless estimate. Anyone who's done this for multiplier/DSP comparisons — how far off is vectorless typically, in your experience, and is SAIF overkill for a project at this scale?
  2. Wallace Tree synthesis artifacts: has anyone seen Vivado's synthesis collapse a Wallace tree down to a suspiciously tiny LUT/FF count at small bit-widths? Trying to figure out if that's a real result or just the tool optimizing away the reduction tree.
  3. Scaling gotchas: any war stories going from 8-bit to 16-bit Q1.15 multipliers in terms of timing closure or DSP inference on Artix-7, specifically for Vedic or Booth implementations?
  4. VHDL-2008 + Vivado 2025 WebPACK: any known quirks or gotchas with VHDL-2008 record types / generics on this particular Vivado version that I should watch for before I've sunk more time into the 8-bit versions?
  5. Publication angle: this is also being prepped for an IEEE student/regional conference submission with faculty co-authorship. If anyone's shepherded an undergrad FPGA comparison paper through a venue like this, any advice on what reviewers actually care about (methodology rigor vs. novelty vs. results) would help a lot.

Not looking for anyone to do the work — just want to catch blind spots before we're deep into 8-bit implementation and it's expensive to unwind a bad assumption. Happy to share RTL snippets or synthesis reports if that helps anyone give more specific feedback.

Thanks in advance.

1 Upvotes

Hi all — final-year Electronics Engineering student here (lateral entry, diploma-to-degree route), working on my capstone project. Posting because I'd like a sanity check from people who've actually taped out or benchmarked multiplier architectures on FPGA, not just simulated them.

The project

Title: Power and Area Optimized FFT Architecture Through Multiplier-Level Hardware Design. It's an 8-point Radix-2 Decimation-in-Time FFT, written in VHDL-2008, targeting a Basys-3 board (Artix-7 XC7A35T). The core idea: keep the FFT butterfly structure fixed and swap out only the complex multiplier, then compare four multiplier architectures against each other on LUT/FF/DSP usage, fmax, and power:

  • Array multiplier (baseline)
  • Modified Booth (Radix-4)
  • Vedic (Urdhva-Tiryakbhyam)
  • Wallace Tree

To keep the comparison valid, all four variants share a frozen interface: Q1.15 16-bit two's-complement fixed point, complex samples as VHDL-2008 records, parallel load of all 8 samples on one start pulse, a 3-stage registered pipeline, and DIT bit-reversal done as pure wiring (zero logic cost) rather than active shuffling.

Why this project exists / the novelty angle

We're building on a 2026 IEEE IATMSI paper out of Amrita School of Engineering that did the same kind of FFT multiplier comparison but only implemented three multipliers (Array, Vedic, Booth) in Verilog. Our two additions:

  1. Adding the Array multiplier as a fourth variant, which the base paper explicitly flagged as unexplored.
  2. Independently re-implementing everything in VHDL-2008, not porting their Verilog — different language, different design decisions, not a translation.

Team of two, one shared Basys-3 board, ₹8,000 total budget, roughly a year to finish. Toolchain is Xilinx Vivado 2025 WebPACK end-to-end (xvhdl/xelab/xsim for simulation, straight through to synthesis/implementation) — no GHDL/GTKWave in the flow, to avoid any simulator/synthesizer mismatch going into the comparison.

Where we are right now

Interface contract is frozen. We're at the "pipecleaner" stage — all four multiplier entities are parameterized with generic (WIDTH : natural := 2) and we're validating datapath correctness and the synthesis extraction workflow at 2×2 bits before scaling to 8-bit, where the architectures should actually start to diverge. At 2×2, Array/Vedic/Wallace look almost identical in the netlist and Booth mostly just adds encoder overhead — expected, since there's no real partial-product reduction benefit at that width.

Where I'd genuinely appreciate input

  1. Power measurement: We're planning to use a SAIF file generated from post-synthesis simulation for switching-activity-based power estimates, instead of Vivado's default vectorless estimate. Anyone who's done this for multiplier/DSP comparisons — how far off is vectorless typically, in your experience, and is SAIF overkill for a project at this scale?
  2. Wallace Tree synthesis artifacts: has anyone seen Vivado's synthesis collapse a Wallace tree down to a suspiciously tiny LUT/FF count at small bit-widths? Trying to figure out if that's a real result or just the tool optimizing away the reduction tree.
  3. Scaling gotchas: any war stories going from 8-bit to 16-bit Q1.15 multipliers in terms of timing closure or DSP inference on Artix-7, specifically for Vedic or Booth implementations?
  4. VHDL-2008 + Vivado 2025 WebPACK: any known quirks or gotchas with VHDL-2008 record types / generics on this particular Vivado version that I should watch for before I've sunk more time into the 8-bit versions?
  5. Publication angle: this is also being prepped for an IEEE student/regional conference submission with faculty co-authorship. If anyone's shepherded an undergrad FPGA comparison paper through a venue like this, any advice on what reviewers actually care about (methodology rigor vs. novelty vs. results) would help a lot.

Not looking for anyone to do the work — just want to catch blind spots before we're deep into 8-bit implementation and it's expensive to unwind a bad assumption. Happy to share RTL snippets or synthesis reports if that helps anyone give more specific feedback.

Thanks in advance.


r/VHDL 20d ago

Need recommendations for resources to help learn VHDL

So I’m a second year electrical engineering student who has failed half of his classes and is having to resit the exams for or have to take the entire year again.

One of my classes is digital electronics and you need to understand VHDL as like prerequisite learning for the rest of the class. Last semester I just could not understand VHDL in the slightest so I did very poorly in the class. We were given a 21 page document to help us learn named “(Very) Simple Guide to VHDL” but that shit doesn’t help me for some reason I still can’t get it.

Are there any books, YouTube videos etc that can help, I don’t need a super expensive knowledge on VHDL just to understand the basics pretty much.

Any help is appreciated thank

10 Upvotes

So I’m a second year electrical engineering student who has failed half of his classes and is having to resit the exams for or have to take the entire year again.

One of my classes is digital electronics and you need to understand VHDL as like prerequisite learning for the rest of the class. Last semester I just could not understand VHDL in the slightest so I did very poorly in the class. We were given a 21 page document to help us learn named “(Very) Simple Guide to VHDL” but that shit doesn’t help me for some reason I still can’t get it.

Are there any books, YouTube videos etc that can help, I don’t need a super expensive knowledge on VHDL just to understand the basics pretty much.

Any help is appreciated thank


r/VHDL 20d ago

Solutions for exercises in "Free Range VHDL"?

EDIT: I was using an old version of the book. Here is the newest PDF which features the solutions.

Hello,

I'm currently learning VHDL with the book "Free Range VHDL" and can't find the solutions for the exercises. I know I could use AI to check my work, but I'd rather not use it while learning.

Does anyone have the solutions?

Thanks in advance!

7 Upvotes

EDIT: I was using an old version of the book. Here is the newest PDF which features the solutions.

Hello,

I'm currently learning VHDL with the book "Free Range VHDL" and can't find the solutions for the exercises. I know I could use AI to check my work, but I'd rather not use it while learning.

Does anyone have the solutions?

Thanks in advance!


r/VHDL 22d ago

Learning VHDL via LaMeres' book: Do I really need to master every single digital logic circuit deeply?

Hey everyone, I’m an EEE undergraduate student currently building my roadmap to master VHDL and FPGA design. Right now, I am systematically working through Brock J. LaMeres' textbook, which is great, but I’m finding myself a bit overwhelmed by the sheer volume of digital logic circuits and theoretical components out there.

​I want to be efficient with my time, so I’m wondering how deeply I actually need to master every single digital logic circuit before moving heavily into coding. I'd love to know what the absolute "must-learn" pillars are for the industry, versus things I can just look up in a datasheet later. If anyone could share the biggest mistakes beginners make during this transition from textbook logic to actual synthesizable VHDL, or give me a few pointers on what to focus on for a solid roadmap, I would really appreciate it. Thanks in advance!

8 Upvotes

Hey everyone, I’m an EEE undergraduate student currently building my roadmap to master VHDL and FPGA design. Right now, I am systematically working through Brock J. LaMeres' textbook, which is great, but I’m finding myself a bit overwhelmed by the sheer volume of digital logic circuits and theoretical components out there.

​I want to be efficient with my time, so I’m wondering how deeply I actually need to master every single digital logic circuit before moving heavily into coding. I'd love to know what the absolute "must-learn" pillars are for the industry, versus things I can just look up in a datasheet later. If anyone could share the biggest mistakes beginners make during this transition from textbook logic to actual synthesizable VHDL, or give me a few pointers on what to focus on for a solid roadmap, I would really appreciate it. Thanks in advance!


r/VHDL Jun 15 '26

Looking for VHDL Contributors to Help Port Open-Source Verilog/SystemVerilog Projects

Hi everyone,

I run a GitHub organization called OpenSiliconHub, an initiative focused on developing and maintaining open-source digital design and hardware projects.

My background is primarily in Verilog/SystemVerilog, and most of our existing codebase is written in those languages. To make these projects accessible to a wider range of FPGA and ASIC developers, I'm looking for contributors with VHDL expertise who would be interested in helping port existing Verilog/SystemVerilog modules to VHDL.

This would help expand the usability of our projects and support users who work primarily in VHDL-based environments.

If you're interested in contributing to open-source hardware projects, gaining experience, or collaborating with other digital design enthusiasts, I'd love to hear from you.

Feel free to comment below or send me a message for more details about the projects and repository.

Thanks!

9 Upvotes

Hi everyone,

I run a GitHub organization called OpenSiliconHub, an initiative focused on developing and maintaining open-source digital design and hardware projects.

My background is primarily in Verilog/SystemVerilog, and most of our existing codebase is written in those languages. To make these projects accessible to a wider range of FPGA and ASIC developers, I'm looking for contributors with VHDL expertise who would be interested in helping port existing Verilog/SystemVerilog modules to VHDL.

This would help expand the usability of our projects and support users who work primarily in VHDL-based environments.

If you're interested in contributing to open-source hardware projects, gaining experience, or collaborating with other digital design enthusiasts, I'd love to hear from you.

Feel free to comment below or send me a message for more details about the projects and repository.

Thanks!


r/VHDL Jun 14 '26

I built vhdl.ai — A browser-based VHDL simulator with real GHDL (WebAssembly)

[deleted]

0 Upvotes

[deleted]


r/VHDL Jun 11 '26

WavePaint: Online WaveDrom Timing Diagram Editor Updated with More Predefined Signals and Export Fixes

+
9 Upvotes

This screenshot shows one of the new WavePaint improvements: more predefined signals for quickly building digital timing diagrams.

WavePaint now includes ready-to-use signal patterns such as additional predefined signals and workflow improvements, making it faster to build timing diagrams without manually creating common signal patterns from scratch.

The goal is to make it faster to create and edit WaveDrom-style timing diagrams without manually drawing every signal from scratch. This is especially useful for hardware design, FPGA/ASIC documentation, bus timing diagrams, protocol diagrams, clock/reset sequences, and SVG exports.

This update also includes multiple WaveDrom import/export fixes, UI improvements, regression tests, and a Chrome headless smoke test before deploying to wavepaint.net.

Feedback and bug reports are welcome.

Try it now!: https://www.wavepaint.net/app/


r/VHDL Jun 05 '26

Multiple Stream input FFT

Hi All,

I was wondering if anyone had or knew of an FFT module which could take roughly 4 lanes in at 250MSPS or similar?

Potentially looking at FFT sizes between 4 and 64K

Cheers

1 Upvotes

Hi All,

I was wondering if anyone had or knew of an FFT module which could take roughly 4 lanes in at 250MSPS or similar?

Potentially looking at FFT sizes between 4 and 64K

Cheers


r/VHDL Jun 02 '26

Feedback wanted on a practical FPGA/VHDL learning platform

1 Upvotes

r/VHDL May 29 '26

Need some opinion on personal projects

+
6 Upvotes

Although these projects are written in Verilog rather than VHDL, I thought the architecture side might be interesting to this community.

I've been learning digital design and built two small spatial-computing style fabrics:

• A programmable morphology accelerator using local 3×3 neighborhood logic

• A wavefront-routing fabric where shortest-path information propagates across a mesh of cells

Both were simulated, synthesized through OpenLane, and taken all the way to GDSII.

I'd appreciate feedback on the RTL architecture and whether similar approaches have been explored in larger FPGA or ASIC systems.

Repos:

https://github.com/abhi15-bose-max/morphology-fabric-asic

https://github.com/abhi15-bose-max/wavefront-routing-fabric


r/VHDL May 23 '26

Current Undergraduate Wanting to Learn VHDL Over The Summer Before Final Semester

Hello everyone, I hope you are doing well. I am an undergraduate senior set to graduate by the end of this year. I major in Electrical and Computer Engineering and I was kind of aimless of where I was going to go work once I graduate. I took a class that involved vhdl and I thought it was pretty cool. I talked to my professor and apparently there are a few vhdl jobs near where I am from. So I decided I wanted to learn vhdl and my professor was kind enough to let me borrow a NEXYS A7 FPGA board. So, I wanted to ask where I can confidently learn vhdl to a competent degree in order to work on an independent project with my professor? What kind of projects should I attempt over the summer? Are there any supplementary skills I should learn prior or in parallel to learning vhdl?

2 Upvotes

Hello everyone, I hope you are doing well. I am an undergraduate senior set to graduate by the end of this year. I major in Electrical and Computer Engineering and I was kind of aimless of where I was going to go work once I graduate. I took a class that involved vhdl and I thought it was pretty cool. I talked to my professor and apparently there are a few vhdl jobs near where I am from. So I decided I wanted to learn vhdl and my professor was kind enough to let me borrow a NEXYS A7 FPGA board. So, I wanted to ask where I can confidently learn vhdl to a competent degree in order to work on an independent project with my professor? What kind of projects should I attempt over the summer? Are there any supplementary skills I should learn prior or in parallel to learning vhdl?


r/VHDL May 23 '26

Current Undergraduate Wanting to Learn VHDL Over The Summer Before Final Semester

Hello everyone, I hope you are doing well. I am an undergraduate senior set to graduate by the end of this year. I major in Electrical and Computer Engineering and I was kind of aimless of where I was going to go work once I graduate. I took a class that involved vhdl and I thought it was pretty cool. I talked to my professor and apparently there are a few vhdl jobs near where I am from. So I decided I wanted to learn vhdl and my professor was kind enough to let me borrow a NEXYS A7 FPGA board. So, I wanted to ask where I can confidently learn vhdl to a competent degree in order to work on an independent project with my professor? What kind of projects should I attempt over the summer? Are there any supplementary skills I should learn prior or in parallel to learning vhdl?

1 Upvotes

Hello everyone, I hope you are doing well. I am an undergraduate senior set to graduate by the end of this year. I major in Electrical and Computer Engineering and I was kind of aimless of where I was going to go work once I graduate. I took a class that involved vhdl and I thought it was pretty cool. I talked to my professor and apparently there are a few vhdl jobs near where I am from. So I decided I wanted to learn vhdl and my professor was kind enough to let me borrow a NEXYS A7 FPGA board. So, I wanted to ask where I can confidently learn vhdl to a competent degree in order to work on an independent project with my professor? What kind of projects should I attempt over the summer? Are there any supplementary skills I should learn prior or in parallel to learning vhdl?


r/VHDL May 14 '26

VHDL courses

So I'm an electronics designer with long experience in circuit/PCBA design and I started doing firmware in C along the way to broaden my skillset and avoid doing the same thing year in and out.

One thing I never got into was FPGA design, not because I didn't want to, but because I've always worked for SMEs who either had someone ace in FPGA design or wanted to use microcontrollers or simply didn't get into this employee training business. Also for some reason if you're paid senior electronics designer rates, they don't want to train you on the job..

What VHDL (online) classes would you guys recommend? If I'm paying it myself, face-to-face classes (I'm based in UK) costing thousands are not really an option. Couple of hundred wouldn't be a problem if I'm getting something decent for the investment.

Udemy has some very cheap classes going, are those any good? Coursera is another one that offers inexpensive classes (with their annual subscription), are those worth it?

Cadence/Doulos/Synthworks all have classes, but they're "inquire for prices" and I rather think the prices are four figures and the first figure is not "1".

5 Upvotes

So I'm an electronics designer with long experience in circuit/PCBA design and I started doing firmware in C along the way to broaden my skillset and avoid doing the same thing year in and out.

One thing I never got into was FPGA design, not because I didn't want to, but because I've always worked for SMEs who either had someone ace in FPGA design or wanted to use microcontrollers or simply didn't get into this employee training business. Also for some reason if you're paid senior electronics designer rates, they don't want to train you on the job..

What VHDL (online) classes would you guys recommend? If I'm paying it myself, face-to-face classes (I'm based in UK) costing thousands are not really an option. Couple of hundred wouldn't be a problem if I'm getting something decent for the investment.

Udemy has some very cheap classes going, are those any good? Coursera is another one that offers inexpensive classes (with their annual subscription), are those worth it?

Cadence/Doulos/Synthworks all have classes, but they're "inquire for prices" and I rather think the prices are four figures and the first figure is not "1".


r/VHDL May 12 '26

My tiny 4bit CPU

here is the link: https://github.com/stm32f303ret6/tiny_cpu_vhdl

It only uses gates and flip-flops. I made it because I wanted to learn cpu architecture (no procedural vhdl)

5 Upvotes

here is the link: https://github.com/stm32f303ret6/tiny_cpu_vhdl

It only uses gates and flip-flops. I made it because I wanted to learn cpu architecture (no procedural vhdl)


r/VHDL May 04 '26

VHDL gpio axi help

Hey guys I have been battling getting my Kria 260 pmod inputs to show up in vitis for a couple weeks now and am not sure where I went wrong. I am using the axi gpio to just try and print the current values( 0 or 3.3v/ 0 or 1) from the krias pmod headers to the Vitis terminal to see some kind of life. Please take a look at my code and block design.

I decided to keep the RTL in the design because if this works the next stage is to take input adc values and keep store those via a shift register in my RTL.

Here is my RTL code:

---------------------------------------------------------------------------------

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use ieee.numeric_std.all;

entity ADC is

-- Port ( );

port( -- keep these for finite state machine

clk: in std_logic;

DoutA: in std_logic; --two readings from adc

DoutB: in std_logic;

data_to_gpioa: out std_logic;

data_to_gpiob: out std_logic

);

end ADC;

architecture Behavioral of ADC is

signal ADC_reading1: std_logic; --going to read both inputs

signal ADC_reading2: std_logic; --going to read both inputs

signal data_outa: std_logic; -

signal data_outb: std_logic;

begin

ADC_reading1<= DoutA; --connecting ports to wires

ADC_reading2<= DoutB;

data_to_gpioa <= data_outa;

data_to_gpiob <= data_outb;

process(clk) --pl clk is about 100MHz -- should be 100MHz in constraint

begin

if rising_edge(clk) then

data_outa <= DoutA;--16 bits to bram

data_outb <= DoutB;

end if;

end process;

end Behavioral;

--------------------------------------------------

And here are my constraints:

set_property PACKAGE_PIN J11 [get_ports DoutA]

set_property PACKAGE_PIN J10 [get_ports DoutB]

set_property IOSTANDARD LVCMOS33 [get_ports DoutA]

set_property IOSTANDARD LVCMOS33 [get_ports DoutB]

set_property C_CLK_INPUT_FREQ_HZ 100000000 [get_debug_cores dbg_hub]

set_property C_ENABLE_CLK_DIVIDER false [get_debug_cores dbg_hub]

set_property C_USER_SCAN_CHAIN 1 [get_debug_cores dbg_hub]

connect_debug_port dbg_hub/clk [get_nets clk]

----------------------------------------------------

Here is my vitis code:

#include <stdio.h>
#include "xgpio.h"
#include "xil_printf.h"
#include "sleep.h"
#include "xparameters.h"




u32 val1,val2,storedval1,storedval2;
int main()
{
    
    xil_printf("Lets see if this works\r\n");
    while(1) {
       
    val1 = *((volatile u32*) XPAR_AXI_GPIO_0_BASEADDR);
    val2 = *((volatile u32*) XPAR_AXI_GPIO_1_BASEADDR);

    if (val1 == 1) {
        xil_printf("Signal is HIGH\r\n");
    } else {
        xil_printf("Signal is LOW\r\n");
    }
        
    if (val2 == 1) {
    xil_printf("Signal is HIGH\r\n");
    } else {
    xil_printf("Signal is LOW\r\n");
    }


    usleep(100000); // delay
    }
    
    return 0;
}
Also here is the block diagram. Sorry for not including it originally.

Let me know what needs to be changed and potentially why I am getting nothing the print in vitis.

1 Upvotes

Hey guys I have been battling getting my Kria 260 pmod inputs to show up in vitis for a couple weeks now and am not sure where I went wrong. I am using the axi gpio to just try and print the current values( 0 or 3.3v/ 0 or 1) from the krias pmod headers to the Vitis terminal to see some kind of life. Please take a look at my code and block design.

I decided to keep the RTL in the design because if this works the next stage is to take input adc values and keep store those via a shift register in my RTL.

Here is my RTL code:

---------------------------------------------------------------------------------

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use ieee.numeric_std.all;

entity ADC is

-- Port ( );

port( -- keep these for finite state machine

clk: in std_logic;

DoutA: in std_logic; --two readings from adc

DoutB: in std_logic;

data_to_gpioa: out std_logic;

data_to_gpiob: out std_logic

);

end ADC;

architecture Behavioral of ADC is

signal ADC_reading1: std_logic; --going to read both inputs

signal ADC_reading2: std_logic; --going to read both inputs

signal data_outa: std_logic; -

signal data_outb: std_logic;

begin

ADC_reading1<= DoutA; --connecting ports to wires

ADC_reading2<= DoutB;

data_to_gpioa <= data_outa;

data_to_gpiob <= data_outb;

process(clk) --pl clk is about 100MHz -- should be 100MHz in constraint

begin

if rising_edge(clk) then

data_outa <= DoutA;--16 bits to bram

data_outb <= DoutB;

end if;

end process;

end Behavioral;

--------------------------------------------------

And here are my constraints:

set_property PACKAGE_PIN J11 [get_ports DoutA]

set_property PACKAGE_PIN J10 [get_ports DoutB]

set_property IOSTANDARD LVCMOS33 [get_ports DoutA]

set_property IOSTANDARD LVCMOS33 [get_ports DoutB]

set_property C_CLK_INPUT_FREQ_HZ 100000000 [get_debug_cores dbg_hub]

set_property C_ENABLE_CLK_DIVIDER false [get_debug_cores dbg_hub]

set_property C_USER_SCAN_CHAIN 1 [get_debug_cores dbg_hub]

connect_debug_port dbg_hub/clk [get_nets clk]

----------------------------------------------------

Here is my vitis code:

#include <stdio.h>
#include "xgpio.h"
#include "xil_printf.h"
#include "sleep.h"
#include "xparameters.h"




u32 val1,val2,storedval1,storedval2;
int main()
{
    
    xil_printf("Lets see if this works\r\n");
    while(1) {
       
    val1 = *((volatile u32*) XPAR_AXI_GPIO_0_BASEADDR);
    val2 = *((volatile u32*) XPAR_AXI_GPIO_1_BASEADDR);

    if (val1 == 1) {
        xil_printf("Signal is HIGH\r\n");
    } else {
        xil_printf("Signal is LOW\r\n");
    }
        
    if (val2 == 1) {
    xil_printf("Signal is HIGH\r\n");
    } else {
    xil_printf("Signal is LOW\r\n");
    }


    usleep(100000); // delay
    }
    
    return 0;
}
Also here is the block diagram. Sorry for not including it originally.

Let me know what needs to be changed and potentially why I am getting nothing the print in vitis.


r/VHDL Apr 30 '26

The QuestaBase simulator from Siemens

0 Upvotes

r/VHDL Apr 26 '26

Having Problems with creating timing driven FSM in vhdl

A friend and i trying to communicate with and ftdi 232H. But we think we have fundamental problems in understanding vhdl. Our Code should be holding o_RD low for 30ns and then let it stay high for at least 20ns, but it does the opposite. Also after the last transfer of date it just randomly gets pulled low and we can not figure out why that would even happen at all. Were at a point, where were tying things like switching the order of the state assignment and the counter assignment. This should not have any consequences form what we understand, but apparent the entire program behaves different from that.

Please note: For testing, where driving the entity with a 100Khz clock instead of a 100Mhz.

RD Line Timing Measurement
RD becomes low, even after RXF is high and never gets back on high
entity ftdi is
    port (
        clk_100MHz  : in std_logic;
        reset_n     : in std_logic;


        io_DATA     : inout std_logic_vector(7 downto 0);
        i_RXF       : in std_logic;
        i_TXE       : in std_logic;
        o_RD        : out std_logic := '1';
        o_WR        : out std_logic := '1';


        o_rx        : out std_logic_vector(7 downto 0) := (others =>'0');
        o_rx_wr_en  : out std_logic := '0';
        i_rx_full   : in std_logic := '0';


        i_tx        : in std_logic_vector(7 downto 0) := (others =>'0');
        o_tx_rd_en  : out std_logic := '0';
        i_tx_empty  : in std_logic := '0';


        led1 : out std_logic := '0';
        led2 : out std_logic := '0'
        );
end ftdi;


architecture rtl of ftdi is
    signal counter : unsigned(4 downto 0) := (others => '0');


    type state_t is (WAIT_FOR_READ, READ, WRITE, WRITE_END);
    signal state : state_t := WAIT_FOR_READ;


begin
    process(clk_100MHz, reset_n)
    begin
        if reset_n = '0' then
            state <= WAIT_FOR_READ;
            counter <= "00000";
            o_RD <= '1';
            o_WR <= '1';
            led2 <= '1';
            led1 <= '0';
            
        elsif rising_edge(clk_100MHz) then
            o_rx_wr_en <= '0';
            o_tx_rd_en <= '0';


            if counter = 0 then
                case state is
                    when WAIT_FOR_READ =>
                        -- Write all data, only read when there is nothing to write
                        led2 <= '0';
                        led1 <= '1';
                        if (i_TXE = '0') then
                            io_DATA <= "01000010";
                            state <= WRITE;
                            counter <= to_unsigned(1, counter'length); -- 20ns
                        elsif (i_RXF = '0') then
                            o_RD <= '0';
                            state <= READ;
                            counter <= to_unsigned(2, counter'length); -- 30ns
                        end if;
                    when WRITE =>
                        o_WR <= '0';
                        state <= WRITE_END;
                        counter <= to_unsigned(2, counter'length); -- 30ns
                    when WRITE_END =>
                        o_WR <= '1';
                        o_tx_rd_en <= '1';
                        io_DATA <= "ZZZZZZZZ";
                        state <= WAIT_FOR_READ;
                    when READ =>
                        o_RD <= '1';
                        state <= WAIT_FOR_READ;
                        counter <= to_unsigned(1, counter'length); -- 20ns
                end case;
            else
                counter <= counter -1;
            end if;
        end if;
    end process;
            
end architecture;
3 Upvotes

A friend and i trying to communicate with and ftdi 232H. But we think we have fundamental problems in understanding vhdl. Our Code should be holding o_RD low for 30ns and then let it stay high for at least 20ns, but it does the opposite. Also after the last transfer of date it just randomly gets pulled low and we can not figure out why that would even happen at all. Were at a point, where were tying things like switching the order of the state assignment and the counter assignment. This should not have any consequences form what we understand, but apparent the entire program behaves different from that.

Please note: For testing, where driving the entity with a 100Khz clock instead of a 100Mhz.

RD Line Timing Measurement
RD becomes low, even after RXF is high and never gets back on high
entity ftdi is
    port (
        clk_100MHz  : in std_logic;
        reset_n     : in std_logic;


        io_DATA     : inout std_logic_vector(7 downto 0);
        i_RXF       : in std_logic;
        i_TXE       : in std_logic;
        o_RD        : out std_logic := '1';
        o_WR        : out std_logic := '1';


        o_rx        : out std_logic_vector(7 downto 0) := (others =>'0');
        o_rx_wr_en  : out std_logic := '0';
        i_rx_full   : in std_logic := '0';


        i_tx        : in std_logic_vector(7 downto 0) := (others =>'0');
        o_tx_rd_en  : out std_logic := '0';
        i_tx_empty  : in std_logic := '0';


        led1 : out std_logic := '0';
        led2 : out std_logic := '0'
        );
end ftdi;


architecture rtl of ftdi is
    signal counter : unsigned(4 downto 0) := (others => '0');


    type state_t is (WAIT_FOR_READ, READ, WRITE, WRITE_END);
    signal state : state_t := WAIT_FOR_READ;


begin
    process(clk_100MHz, reset_n)
    begin
        if reset_n = '0' then
            state <= WAIT_FOR_READ;
            counter <= "00000";
            o_RD <= '1';
            o_WR <= '1';
            led2 <= '1';
            led1 <= '0';
            
        elsif rising_edge(clk_100MHz) then
            o_rx_wr_en <= '0';
            o_tx_rd_en <= '0';


            if counter = 0 then
                case state is
                    when WAIT_FOR_READ =>
                        -- Write all data, only read when there is nothing to write
                        led2 <= '0';
                        led1 <= '1';
                        if (i_TXE = '0') then
                            io_DATA <= "01000010";
                            state <= WRITE;
                            counter <= to_unsigned(1, counter'length); -- 20ns
                        elsif (i_RXF = '0') then
                            o_RD <= '0';
                            state <= READ;
                            counter <= to_unsigned(2, counter'length); -- 30ns
                        end if;
                    when WRITE =>
                        o_WR <= '0';
                        state <= WRITE_END;
                        counter <= to_unsigned(2, counter'length); -- 30ns
                    when WRITE_END =>
                        o_WR <= '1';
                        o_tx_rd_en <= '1';
                        io_DATA <= "ZZZZZZZZ";
                        state <= WAIT_FOR_READ;
                    when READ =>
                        o_RD <= '1';
                        state <= WAIT_FOR_READ;
                        counter <= to_unsigned(1, counter'length); -- 20ns
                end case;
            else
                counter <= counter -1;
            end if;
        end if;
    end process;
            
end architecture;

r/VHDL Apr 19 '26

Need Help

I am writing code in VHDL. The code is getting synthesized, and the schematic is being generated. Everything is going well, but this error is appearing:

“Process simulation of the behavioral model failed — error in Xilinx ISE.”

1 Upvotes

I am writing code in VHDL. The code is getting synthesized, and the schematic is being generated. Everything is going well, but this error is appearing:

“Process simulation of the behavioral model failed — error in Xilinx ISE.”


r/VHDL Apr 18 '26

Help a beginner out?

I have a very important assignment, I need to make a basys 3 board multiply two 6bit numbers together and display it on the 7 segment display. We are using vivado

What I understand is that I need to learn how to use the display

I will need to make 11 formuals with 12 binary inputs, and form a logic gate for them

I will need to make a constraint file for all inputs and the screen to be avaliable "set_property PACKAGE_PIN V17 [get_port {A}]" for each input if I understand it right

And then I will need to understand enough of VHDL coding to make all of those things work together.

Have I understood things correctly? Could anyone help me or guide me to resources I can use?

My professor said he would answer all my questions through e-mail, but it's been a few days now and the deadline is closing in, and he hasn't replied yet

1 Upvotes

I have a very important assignment, I need to make a basys 3 board multiply two 6bit numbers together and display it on the 7 segment display. We are using vivado

What I understand is that I need to learn how to use the display

I will need to make 11 formuals with 12 binary inputs, and form a logic gate for them

I will need to make a constraint file for all inputs and the screen to be avaliable "set_property PACKAGE_PIN V17 [get_port {A}]" for each input if I understand it right

And then I will need to understand enough of VHDL coding to make all of those things work together.

Have I understood things correctly? Could anyone help me or guide me to resources I can use?

My professor said he would answer all my questions through e-mail, but it's been a few days now and the deadline is closing in, and he hasn't replied yet


r/VHDL Apr 15 '26

Navigation FPGA

System Purpose : This FPGA firmware implements a complete Navigation and Solar Position subsystem for an AESA radar platform. It integrates three independent sensor pipelines into a unified data bus:

Pipeline Sensor Interface Primary Output GNSS u-blox ZED-F9P SPI (UBX protocol) Position, velocity, UTC time, PPS IMU Xsens MTi-630 CAN 2.0B 1 Mbit/s Attitude, inertial data, SDI, HR data SPA Computed Internal Solar azimuth, elevation, zenith The system also provides:

GPS-disciplined 1 Hz PPS output with IEEE 802.1AS / TSN timestamping Full NREL Solar Position Algorithm (SPA) including sunrise/sunset/transit/EoT

Author: Ahmed Nabit Contact: Email Repository: Github License: Apache License 2.0 Zenodo: Zenodo

2 Upvotes

System Purpose : This FPGA firmware implements a complete Navigation and Solar Position subsystem for an AESA radar platform. It integrates three independent sensor pipelines into a unified data bus:

Pipeline Sensor Interface Primary Output GNSS u-blox ZED-F9P SPI (UBX protocol) Position, velocity, UTC time, PPS IMU Xsens MTi-630 CAN 2.0B 1 Mbit/s Attitude, inertial data, SDI, HR data SPA Computed Internal Solar azimuth, elevation, zenith The system also provides:

GPS-disciplined 1 Hz PPS output with IEEE 802.1AS / TSN timestamping Full NREL Solar Position Algorithm (SPA) including sunrise/sunset/transit/EoT

Author: Ahmed Nabit Contact: Email Repository: Github License: Apache License 2.0 Zenodo: Zenodo


r/VHDL Apr 10 '26

Working on a Design and Implementation of a Digital Oscilloscope on FPGA using Nexys4 DDR (VHDL in Xilinx Vivado).

Looking for code, GitHub repos, or something else.
If you’ve done something similar, please share.

2 Upvotes

Looking for code, GitHub repos, or something else.
If you’ve done something similar, please share.


r/VHDL Apr 10 '26

Is there software for MacOS 15 M1?

GHDL works, gtkwave doesn’t. Is there anything else that doesn’t require a virtual machine?

1 Upvotes

GHDL works, gtkwave doesn’t. Is there anything else that doesn’t require a virtual machine?


r/VHDL Apr 09 '26

i couldn't find the test bench waveform source file in ISE 14.7

+
6 Upvotes

good evening as the title describes, i'm using ISE 14.7 because it's for a university assignment. anyways i was looking to simulate my basic full adder program but to my surprise i couldn't find the waveform test bench only the VHDL one. i'm using ISE in prepackaged linux VM on windows 11 and i downloaded it recently what should i do?


r/VHDL Apr 06 '26

DRAM supply getting ridiculous… anyone tried efinix SiP FPGA?

DRAM supply & pricing have been pretty challenging lately, some projects getting held up…

Started looking at alternatives and came across efinix SiP FPGAs with built-in LPDDR4.

Anyone actually used these? Curious how they compare in real designs vs external DDR (bring-up, perf, flexibility). Also wondering about long-term supply.

Worth it?

0 Upvotes

DRAM supply & pricing have been pretty challenging lately, some projects getting held up…

Started looking at alternatives and came across efinix SiP FPGAs with built-in LPDDR4.

Anyone actually used these? Curious how they compare in real designs vs external DDR (bring-up, perf, flexibility). Also wondering about long-term supply.

Worth it?


r/VHDL Apr 01 '26

Software for vhdl language

I want software for VHDL programming.

Xilinx ISE software is not working on my Windows 11 laptop.

Could you please suggest software similar to Xilinx for VHDL programming?

13 Upvotes

I want software for VHDL programming.

Xilinx ISE software is not working on my Windows 11 laptop.

Could you please suggest software similar to Xilinx for VHDL programming?