Domain: jhdl.org
Stories and comments across the archive that link to jhdl.org.
Comments · 6
-
My Advice
Hardware: I highly recommend the Spartan Starter Kits. They're dirt cheap, well supported by the industry, and come with a good toolkit. There's not much more you need to know other than you'll probably want a serial cable in addition to the JTAG cable the kit ships with.
I'll grant you that the fabric isn't very large by today's standards, but it's still enough space to learn about the hardware. By the time you outgrow the fabric, you should have a good idea of what size hardware you want. In fact, your next board may even be a custom design based on a bus like wishbone.
;-)Software: The Xilinx stuff (pronounced "Zy-Links") comes with a full toolkit for VHDL/Verilog development including an IDE, place and route tools, and software to reconfigure the FPGA. It's all quite slick and easy for a beginner to use.
Language: The most common route taken by new hardware developers is to learn Verilog. They do this because it's similar to C and that makes them comfortable. THIS IS A BAD IDEA. I can't count how many hardware designers swear up a storm when they see a Verilog project with loops and other software constructs stuck into them. See, the comfort and familarity of C makes new hardware developers forget that the hardware is a fixed layout. There is no for loops or control logic as you think of it. It all ends up flattening to hardware. If you write regular software constructs, you'll end up with the least efficient circuit possible.
From this perspective, learning VHDL is better because you won't have that comfort and familiarity that might tempt you into creating poor circuits.
I actually recommend doing some JHDL code for a while. It's lower level than VHDL, but that's a good thing. You have to think about every wire connection and how it all links up. When you're done, you can easily step through your circuit and see how it plays out in hardware. Even better, you learn how to properly use software constructs like loops to create a large number of static hardware objects. This will make your code better without falling in the trap of trying to write software.
That's my 2 cents anyway. Good luck!
:-) -
Re:College Classes
I haven't seen a speck of java (or even c++) in my ECE (Electrical & computer engineering) courses
You mean they stopped using JHDL as a teaching tool? That's too bad.... :-P -
Re:Moore's law is not about inefficient FPGA inter
granted on most of them you have to know verilog or vhdl to use them
JHDL is my favorite alternative to these languages. Rather than embedding the behavior in the language itself (which I personally think is the source of most confusion and poor HDL design) JHDL provides you with Java APIs that can be used to construct the circuit.
It works surprisingly well, in part because circuit design is more object oriented to begin with. Just like in good OOP design, you want your circuits to be simple, black-box designs that will always produce output Y for input X. More complex circuits can be designed by simply "snapping together" smaller circuit Objects to create larger, more complex entities. -
Re:Pardon my ignorance...
Needless to say, this is not a beginners project by any means. But is it possible for a few hundred dollars and a few hundred hours.
Nonsense! Beginners do it all the time. All you need is $99 to get yourself a Spartan 3 Starter Kit, the free WebPack ISE tools that Xilinx bundles, and a lot of perseverance in learning VHDL, Verilog, JHDL, or some other Hardware Design Language of choice.
As a bonus, the Starter Kit comes with manuals targetted right at newbies to hardware design. It's so easy to understand the hardware layouts of the board that a monkey could do it, and the booklet explaining the history and usage of FGPAs is most informative. Pick up an understanding of Logic Gates from Wikipedia, and you should be ready to get started. (Personally, I think JHDL is the best place to start because it forces you to deal with the actual gates. Once you get that clear in your head VHDL and Verilog become much easier to master.) -
Re:C++ is cross-platform, dont know what your smok
Where reflection comes in handy is when you have a plain old data struct, with data members, and you want to automagically generate a UI to fill in the struct members.
That's one use (though you probably want to use the bean libraries for that). There are a few other good ones:
1. Since Java didn't implement variable arguments until recently, reflection could be used to dynamically call a method with an unknown number of arguments. An example of this is JHDL which looks at a static array to get the number of wires to pass to the constructor, then uses any additional ints or Strings as configuration parameters.
2. Somewhat related to serialization, reflection is perfect for creating Object databases by dynamically saving field values to disk, and reloading the state.
3. Reflection can be used to take a multidimensional array and quicky flatten it for storage on disk, or redimensionalize it after you pull the flat array from disk. This only works because an array of any dimension can be cast to an Object (and vica-versa) allowing you to have only one method for any size array. :-) -
Re:Crossbar?
You know what I think? I think you should actually TRY designing a CPU. You may not find things to be as cut and dry as you think. Here's some great tools to get you started. Hope you have a good grasp on the parallelism of circuit design, and understand microcode, instruction decoders, on-chip cache, and pipelining. When you're ready to put your masterpiece in fabric, go grab an FPGA and check to see if you made efficient enough use of silicon to make it fit.
When you're done, show us your design and we'll show you how the existing stuff has been done better.