Max Maxfield 7/30/2012 9:34:55 AM User Rank Blogger
Re: The Scope of FPGA Knowledge is very large
@halherta: I really do appreciate your saying so -- I must admit that I wish I had had this book when I was at college. In fact when I'm writing a book like "Bebop to the Boolean Boogie" I typically write with myself in mind -- that is, I write the sort of book I would like to have read when I was starting out (I know it's silly, but at the back of my mind there's always a little thought about sending the book back through time :-)
Have had to educate myself on FPGA's through self study -- many good books on the subject out there -- But many just present "design a CPU core as the central project" so one has to ferrit out the others that cover other topics as well like Synchronous networks/ FIFO's , Networking , DSP, Wireless, etc to get more rounded.
Thank you for writing such an awesome book that is fun to read and jam packed with digital design knowledge at the same time. I found this book to be a great refresher on digital circuits while working on my PhD and I only wished that it was around when I was studying digital circuits in my undergraduate years!
Chris, I think in most of the colleges, such subjects are given to students as elective subjects. Based on their choice and apt, they can select the desired subjects. But I know in most of the schools or colleges there are not enough knowledgeable persons to guide students in elective subjects, which are hot to the industry/ market.
Max Maxfield 7/25/2012 6:04:53 PM User Rank Blogger
Re: The Scope of FPGA Knowledge is very large
@halherta: Why, thank you so much for referencing my book "Bebop" -- that is really very kind of you -- I must admit that I really am rather proud of that one, because it was my first book (of course it's not in its third edition, so it's reasonably up to date).
hw_fw_engr 7/25/2012 4:07:51 PM User Rank Intermediate
Re: A lively EE Times thread!
I am on a lot of FPGA blogs including 2 on Linked In. This discussion is kicked around there often. The consensus is as follows:
us comapnies: verilog
european companies: vhdl
aerospace: vhdl (defense industry invented vhdl as did they ada when vhdl is derived)
I prefer verilog myself being also a long time C programmer. Syntax is similar, however the mindset is totally different. When writing Verilog you must think circuits and write to fit accordingly. If you try to write as a programmer, you will find yourself quickley in a quagmire.
The reason why FPGA's may not be taught properly in a Bachelors of Electrical Engineering is that the breadth of knowledge required to understand FPGAs is huge.
You need to know the following:
Basic Digital Logic Theory
Advanced Digital Logic Theory - state Machines
Register Transfer level based design techniques
FPGA Architecture
FPGA Design Flow
Desiging basic digital circuits in VHDL/Verilog
Using FSM and RT methodologies to design more complicated Digital circuits using VHDL/Verilog
Designing/programming softcore microprocessors on an FPGA
You can't teach all of this stuff in the usual 2-3 courses usually allocated to Digital Circuits and FPGA's in an EE curriculum. you need at least 5-6 course slots to deliver all of this material.
I also agree with Duane that hands on prototyping of digital circuits from discrete logic gates is absolutely invaluable and will help develop the student's understanding of logic circuitry as well as their debugging capability.
I really like Pong P. Chu's books on FPGA design. They played a big role in helping me manage the FPGA/VHDL/Verilog parts of the necessary FPGA knowledge.
For the basics of Digital Logic Theory I recommend Morris Mano's book on Digital Design and Clive's book "Bebop to the boolean Boogie"
Duane Benson 7/25/2012 2:10:18 PM User Rank Blogger
Where I'd start
I'm still in the very earliest stages of my FPGA journey. From my perspective, though it may seem an anachronism, I would get out some 7400 series logic chips first. My line of thinking indicates that seeing the chips and actually plugging wires is a very helpful foundation.
Once you are into the FPGA, I'd go with the simpler approach to start with. First get the basic concepts down and then things like implementing digital clock managers will make mores sense and be easier to learn.
The easiet way for me to learn is to establish a base and build from there. Building on a base re-enforces so the basics become instinctive.
Here is a first cut example that I think could be usable to establish the pre-reqs.
By reviewing basics the focus cans be sharpened and the starting level can be identified. It should not take much time to cover that an FPGA interfaces to the world via "pins" that have high and low voltage levels and that a high level is a binary '1' and low is '0' and for Boolean logic a high level is 'true' while low is 'false'
Further, a group of binary values can be ordered by exponents of two to represent numerical values.
Now the objective is to take input control signals and binary input values and manipulate the data to generate new output values.
The inputs arrive at different times from various places and there are generally several steps required to generate the output. Clocks are used to synchronize and sequence the operations.
The synchronization and intermediate results need storage elements to hold data and sequencing controls.
The FPGA logic design is separate from the board physical design, however the correct pins must be identified for the logic design based on the board wiring.
There are various tool chains/programs involved to generate the configuration data to establish the FPGA functions. The design input defines the storage elements, the interconnections among them and the control logic that sequences the flow of data.
The most popular are VHDL and Verilog hardware description languages. They are the inputs used to define the bit stream to configure/"program" the FPGA.
Usually either or both can be used for synthesis, but have different non-synthesizable constructs and different syntax.
The FPGA has registers and memories for storage and LUTS (look up tables) for logic and arithmetic expression evaluation.
The main difference between FPGAs vs ASICs are LUTs vs gates and a key factor for FPGA design is efficient utilization of LUTS.
A six input LUT can be extremely powerful but if only 2 or 3 inputs are used a long slow path can result with a lot more LUTs used.
FPGAs are becoming increasingly common in the hobbyist world based on the merits of customization and speed and the advantages associated with the concept of open-source.
Using a Papilio FPGA Development Board, the team built an AVR8-based soft-controller, running on the Papilio, that could handle the kind of data processing and buffering required for the project, while still being able to write code in the Arduino domain.
When learning any hardware for the first time, one always runs into peculiarities that are so foreign and frustrating that they discourage the learner (especially the self-taught learner) from progressing further.
To save this item to your list of favorite All Programmable Planet content so you can find it later in your Profile page, click the "Save It" button next to the item.
If you found this interesting or useful, please use the links to the services below to share it with other readers. You will need a free account with each service to share an item via that service.