FPGARelated.com

Christopher Felton (@cfelton)

Christopher Felton building DSP digital circuits with MyHDL.

Summer of gateware is coming (again)

Christopher FeltonChristopher Felton April 29, 20162 comments

Wondering what gateware will come out of this summer? Christopher Felton announces MyHDL is back in Google Summer of Code and has been awarded six student slots. Projects span GEMAC, a Leros tiny processor, JPEG encoder front/backends, RISC-V tooling and HDMI+RISC-V work. Follow along for short project updates and a final summer summary.


Summer of Gateware

Christopher FeltonChristopher Felton September 18, 2015

Christopher Felton walks through MyHDL's first year as a Google Summer of Code sub organization, from selecting two students to shipping SDRAM and conversion work. He highlights the practical bumps, including proposal expectations, the value of early patches, and the need for frequent mentoring and flexible milestones. The post shares concrete lessons for mentors, students, and projects planning to participate in GSoC.


I don’t often convert VHDL to Verilog but when I do ...

Christopher FeltonChristopher Felton December 24, 20142 comments

Converting VHDL to Verilog is tedious, and Christopher Felton lays out a pragmatic, repeatable workflow using vhd2vl to do most of the heavy lifting. He walks through the iterate-run-comment-fix cycle, highlights frequent failure points like arrays, records and packages, and explains why many open-source projects favor Verilog for better FOSS simulator support.


Point of View

Christopher FeltonChristopher Felton August 28, 20146 comments

Christopher defends a straightforward MyHDL RTL description of a FIR filter, arguing it is explicit, readable, and concise. He compares that style to a functional hardware description built with Python primitives and list comprehensions, and finds both convert to identical synthesis resources for this example. The post highlights readability tradeoffs and suggests choice often comes down to background and preference.


MyHDL Presentation Examples

Christopher FeltonChristopher Felton August 26, 2014

Christopher Felton collected slide-ready MyHDL demos he used at EELive and PyOhio, making it easy to see practical HDL examples in action. The post explains the tradeoffs behind single-slide examples, links to 2013 and 2014 demos from simple FPGA hello-worlds to filters and a VGA system, and points readers to the repository where full and larger examples live for reuse.


[Comments] C HLS Benefits

Christopher FeltonChristopher Felton April 11, 20142 comments

Christopher Felton argues C-to-gate HLS showed little advantage in his median calculation comparison with MyHDL. He explains the test mixes language paradigm and abstraction: Vivado C HLS is an imperative, step-by-step style while MyHDL offers a concurrent, HDL-level description with Python's readability and elaboration features. He notes C-HLS can help if you only know C, but for massively parallel FPGA work non-C tools may be preferable.


Little to no benefit from C based HLS

Christopher FeltonChristopher Felton April 4, 2014

Christopher shows why C-based HLS delivers little practical benefit compared with a MyHDL RTL approach, using a Vivado HLS median-filter example. He walks through the sort-network median, compares C and MyHDL implementations, and argues MyHDL is as concise while providing clearer microarchitecture control. The post emphasizes that choosing the right algorithm is the hard part, and HLS won’t replace hardware understanding.


MyHDL Interface Example

Christopher FeltonChristopher Felton January 18, 20142 comments

Christopher Felton shows how MyHDL 0.9 interfaces bundle Signals into a single bus object to cut connector clutter and simplify module connections. The post walks through a pedagogical example where button presses drive a memory-mapped BareBoneBus read-modify-write that inverts LEDs, with a TDD-style testbench and notes on converting to Verilog/VHDL and loading the example on supported boards.


MyHDL @EDAPlayground

Christopher FeltonChristopher Felton October 24, 2013

MyHDL just got easier to try: it's available on EDAPlayground, so you can run Python-based HDL verification directly in the browser. The two-panel editor places the testbench on the left and the HDL under test on the right, with public examples such as a simple strobe and a RAM test ready to copy. Christopher Felton also links a curated resource list to help you get started quickly.


binary hello world

Christopher FeltonChristopher Felton August 3, 20132 comments

Christopher Felton walks through two minimalist "binary hello world" examples that make FPGA basics approachable using Python and MyHDL. Attendees wire a button to an LED, add a flip-flop to introduce registers, then implement debouncing and blink-rate control, all compiled with simple Python scripts that drive the FPGA tool flow. Complete source is available on Bitbucket for hands-on experimentation.


Tool install for examples

Christopher FeltonChristopher Felton August 2, 20132 comments

The post explains the toolchain and installs needed to compile the FPGARelated MyHDL examples. It notes that examples use MyHDL for hardware description and the myhdl_tools/rhea.build Python packages to drive the FPGA vendor tools, so the full flow runs from a Python environment. The author lists required installs: MyHDL (pip or GitHub), myhdl_tools (Bitbucket), the rhea.build automation package, and the FPGA vendor toolchains (Xilinx ISE WebPACK, Altera Quartus, Lattice Diamond). Board-specific programming utilities such as fpgalink and xstools are also required for various development boards. Most examples live in a Bitbucket repository or gist and include a test_and_build_.py script that automates convert, synthesize, map, place-and-route, and bitfile generation. A 2015 changelog notes some tools were deprecated and repository locations were updated.


What do Ohio, Python, and FPGAs have in common?

Christopher FeltonChristopher Felton July 23, 2013

Christopher Felton is bringing MyHDL, Python, and hands-on FPGA work to the free pyohio regional conference on July 27-28. His informal talk introduces programmable hardware to imperative thinkers, contrasts FPGAs with modern computers, and showcases the MyHDL package. The follow-up workshop lets Python programmers edit an example, configure a Xess development board, and see their changes run on real hardware.


MyHDL ... MyPWM

Christopher FeltonChristopher Felton June 3, 20135 comments

Christopher Felton presents a compact MyHDL PWM engine designed to be configured at design time and targeted for FPGA synthesis. The module derives PWM bit width from the system clock frequency and desired pwm_frequency, truncates inputs when necessary, and prints parameter summaries for different clock/pwm combinations. The post includes the full MyHDL source and a simulation waveform showing the input signal and the modulated output, making it easy to reproduce.


MyHDL Resources and Projects

Christopher FeltonChristopher Felton December 9, 20122 comments

Christopher Felton has pulled together a compact, practical guide to learning and using MyHDL, with the essential manual, Jan Decaluwe's deep dives, presentations, example projects, and active Git/Bitbucket repos. Whether you want a tutorial path, reference reads, or hands-on FPGA projects from simple LEDs to SDR and DSP cores, this curated list points you to vetted resources and real designs to study and reuse.


MyHDL FPGA Tutorial II cont. (Echo, Audio Interface)

Christopher FeltonChristopher Felton September 13, 201210 comments

Christopher Felton walks through connecting an FPGA to a TI AIC23 audio codec using MyHDL, covering SPI register programming and I2S streaming. The post explains how the AIC23 module decodes I2S into parallel samples with a Ts sample-valid strobe and how startup SPI writes configure sample width and rate. You get a simple loopback/echo testbench and practical notes on 16/24/32-bit sample handling.


MyHDL FPGA Tutorial II (Audio Echo)

Christopher FeltonChristopher Felton July 18, 2012

Christopher Felton demonstrates how to build an FPGA audio echo using MyHDL by storing delayed samples in BRAM and mixing them back with incoming audio. The project shows parameterizable sample rate, sample width, buffer depth, and conversion from MyHDL to Verilog, with a strong emphasis on test-driven verification and simulation-based resource reports. Read on to see how delay, scaling, and BRAM usage affect real-time audio.


Are you kidding me?

Christopher FeltonChristopher Felton July 1, 2012

Christopher Felton pushes back on the idea that C/C++/SystemC are the natural path to higher-abstraction FPGA design. He argues hardware designers often do not use C-family languages for modeling and simulation, so choosing C as the HLS lingua franca may be more about tool momentum than suitability. The post urges reconsidering languages with higher abstraction and lower cost of entry for system modeling and HLS.


Grandiose Delusions

Christopher FeltonChristopher Felton May 3, 2012

Christopher Felton admits his big plans for an open-source MyHDL IP ecosystem never quite finished, and explains why. He reflects on scope creep, hobby-time distractions, and excessive tool-building that slowed progress. The post is a candid look at what it takes to produce production-quality FPGA IP: documentation, regression tests, and hardware validation.


MyHDL FPGA Tutorial I (LED Strobe)

Christopher FeltonChristopher Felton January 31, 20126 comments

Skip Verilog and try MyHDL, a Python-based HDL, to build and simulate an FPGA LED strobe in this hands-on tutorial. Christopher Felton walks through a parameterized LED shifter, py.test driven verification, and automated conversion to Verilog and bitstreams for several development boards. The post includes scripts to generate pin constraints and run vendor tools so you can build and program boards from one language.


USB-FPGA : Introduction

Christopher FeltonChristopher Felton January 12, 20111 comment

Christopher Felton recounts a six-year hobby project to build an open-source USB-FPGA board and its toolchain, from PCB to gateware, firmware, and PC software. He explains why the Cypress FX2 and a Spartan3 were chosen, how the USBP framework supported multiple boards, and why the project’s open-source ambitions didn’t attract the collaboration he expected. Expect practical design and community lessons.


A Bit Bucket had Holes

Christopher FeltonChristopher Felton July 28, 20101 comment

Christopher Felton looks back at TierLogic's multi-layer FPGA idea and its recent shutdown, contrasting it with Tabula's virtual 3D approach. He asks whether physical-layer stacking could have delivered the ultra-high logic density some designs need, especially at modest clock rates and small footprints. The post highlights how funding, market fit, and patent outcomes often decide whether neat FPGA tech becomes a product.


Developing FPGA-DSP IP with Python

Christopher FeltonChristopher Felton March 16, 20101 comment

Designing FPGA-DSP IP entirely in Python is practical and productive, as Christopher Felton demonstrates using MyHDL. He shows how numpy and scipy handle the signal design while a SIIR class generates RTL, enables side-by-side floating-point and HDL simulation, and converts to Verilog for synthesis. The post includes Xilinx XC3S500E resource results and a link to the SIIR source on BitBucket, making it easy to try the workflow.


Holy Bit Bucket

Christopher FeltonChristopher Felton March 3, 2010

Christopher Felton reacts to Tabula's 'Spacetime' pitch, which claims an 8x boost in LUT density by time-division multiplexing internal logic. He urges caution, comparing Tabula to Achronix and pointing out that early parts will likely target high-end networking and carry premium pricing. The post argues inexpensive development boards will be crucial for wider adoption.


The Spartans

Christopher FeltonChristopher Felton February 20, 20104 comments

Christopher Felton walks through the Spartan6 FPGA basics, explaining CLBs, slices, and the new 6-input LUTs while comparing them to Spartan3. He ran timing-driven mappings of real gateware to show practical LUT utilization differences. The post gives a pragmatic estimate of expected LUT savings and points out where mapping results can vary depending on the design.


Re: Synplify Pro for Lattice not working

Reply posted 9 years ago (04/23/2017)
I haven't had issues with Lattice/Syn Pro on my system (don't use roaming profiles) but I have had tons of issues with roaming profiles previously.  I requested...

Re: Synplify Pro for Lattice not working

Reply posted 9 years ago (04/23/2017)
...

Re: Mealy or Moore? none and not even state machine

Reply posted 9 years ago (10/07/2016)
I imagine many things in life that can be avoided with obfuscation. 

Re: Mealy or Moore? none and not even state machine

Reply posted 9 years ago (09/30/2016)
I don't think it is useful to try and design a Mealy or Moore (more is less) state-machine.  In some limited cases it can be useful for analysis (reviewing...

Re: Use Microblaze performance monitoring engine

Reply posted 10 years ago (04/29/2016)
@adamt99 is the microblaze expert, he might have some input.
@paulkushner, I have been in both situations but regardless if there are resources to write the application code I typically find myself writing the bare minimal...
Paul (@paulkushner),I do not have any direct experience trying to use an MMCM is such away, I don't have an answer to your specific questions.  But I am familiar...

Re: Why vendors insist on creating block-diagram editors

Reply posted 10 years ago (04/21/2016)
@oliviert The existing landscape of HDL HLS is a misnomer :)   Computer Science: "In low-level languages like C"Computer Engineering: "In high-level languages...

Re: Why vendors insist on creating block-diagram editors

Reply posted 10 years ago (04/21/2016)
@adamt99 (Adam),I feel most at peace with the Sigasi point of view, the graphical displays are great for viewing the results and a means of debugging.  From my...

Re: Why vendors insist on creating block-diagram editors

Reply posted 10 years ago (04/19/2016)
@oliviert, thanks for the comments!  Correct, it is not required to use the block-diagram (BD) systems but if you want to use the IP (cores), “they” in many...
This is more of a transmission line and/or PCB issue, you need to make sure the delay on each of those traces is within tight tolerances.  On the lower end of your...

Re: Why vendors insist on creating block-diagram editors

Reply posted 10 years ago (03/24/2016)
Viewers are great tools and can be very useful in analyzing and debugging. http://www.slideshare.net/sigasi/graphical-program... Might be different strokes for...

Re: Code review. Newbie's first verilog module!

Reply posted 10 years ago (03/24/2016)
This will synthesize with most FPGA tools reg [31:0] count = 0; reg [63:0] dataBitsIN = 64'd0; reg [7:0] bitCount = 0; And is often recommend as the initialization...
Hopefully you feel welcome in this forum :)There could be a couple things going on: first you might be unlucky and are running into the few that need to tear others...

Re: Why vendors insist on creating block-diagram editors

Reply posted 10 years ago (03/21/2016)
@SpiderKenny I am not familiar with Zeidman's book but it seems odd that any contemporary text book on HDL would think schematic entry is useful.  If one is not...
Both XIlinx and Altera waste copious amount of time and resources creating tools to "help" FPGA system designers.  The issue, in my opinion, is that these tools...

Re: Best method for a large dot vector

Reply posted 10 years ago (03/05/2016)
The OP didn't specify the bits widths in the design.  In general, you will be best off using the hard multipliers in an FPGA.  I would be surprised if this design...

Re: Best method for a large dot vector

Reply posted 10 years ago (03/04/2016)
@garengllc, the code will take a little bit to decode but based on your description implementing 274 point dot product, and given some of the constraints I would...

Re: Best method for a large dot vector

Reply posted 10 years ago (03/04/2016)
@garengllc,  I should clarify, you can break you code down like this: The following is my state-machine and it does XYZ always @(posedge clock) begin // state-machine...

Re: Best method for a large dot vector

Reply posted 10 years ago (03/04/2016)
@garengllc instead of dumping your complete code in the post, it is probably best to isolate a snippet of the code (digestable in the post) and then link to the...

Re: FPGA size and tools

Reply posted 10 years ago (02/23/2016)
My experience has been in the opposite direction.  The latest industry tools are lacking considerably to build large complex systems.  As you outlined, the tools...
At some point in the past I had used a carry-select-adder to meet timing for a larger adder.  I did a little experiment to see how often this is true.  The following...

Use this form to contact cfelton

Before you can contact a member of the *Related Sites:

  • You must be logged in (register here)
  • You must confirm you email address