2
\$\begingroup\$

I've been reading the document Spartan-3 FPGA Family Advanced Configuration Architecture and I'm having trouble figuring out what the address of the first LUT is. Can anyone point me in the right direction?

EDIT: I'm trying to setup a Spartan 3E. In order to configure the first LUT as a NOT gate and connect it to outside world, I need to know what value to send to the configuration so that LUT becomes a not gate connected to the pins on the IC that I want.

I am learning about FPGAs and I need to know how they work from the transistor up.

\$\endgroup\$
2
  • 1
    \$\begingroup\$ What do you mean by "address"? And more importantly, what are you trying to do and why? I've been doing Xilinx designs for, well, more years than I care to admit and I have never once needed to know what the "address" of a LUT is. If you give more info about your issue maybe we can figure it out. \$\endgroup\$
    – user3624
    Apr 3 '11 at 23:14
  • \$\begingroup\$ @David Kessner. I've added some more detail as to the intended purpose. As you are an expert and you have no idea what I mean by address it tells me that I may be on the wrong path. \$\endgroup\$
    – user3045
    Apr 4 '11 at 0:01
6
\$\begingroup\$

Learning how FPGA's work from the transistor up is very ambitious. There's a lot of stuff inside an FPGA, and for the most part you never have to understand it to the level of detail that you are seeking. In fact, it's probably better if you ignore that stuff at first and learn some practical FPGA stuff instead.

The reason why you don't need to know those fine details is because the FPGA compiler will do it for you. Using VHDL or Verilog, you tell the FPGA compiler what you want, and it figures out how to do it for you. You don't need to know what gets programmed into the LUT's, where that LUT is located, or how to route the signals to/from the LUT. This also helps when you move from one FPGA to another. A Spartan-6 has a different LUT architecture than the Spartan-3's, and you don't want to have to learn a completely new architecture for each chip you use.

Then, as you get into it more you will learn more of the internal workings of the FPGA. Not down to the transistor level, but you will learn about the different kinds of signal routing resources, RAMs, I/O Blocks, carry logic, etc. Knowing about this kind of logic will help you make better use of the FPGA-- making your logic smaller and faster.

One really cool way to find out about the internals of a Xilinx FPGA is to write some VHDL/Verilog code and compile it. Then using the Xilinx FPGA Editor to go in and examine what the compiler did, looking at signal routing, slice usage, LUTs, and Flip-flops. This is most useful for me in understanding why my logic was bigger than I thought it should be. I would guess that 95% of the time you don't have to understand the inner working of an FPGA in more detail than what FPGA Editor will give you.

\$\endgroup\$
7
  • 1
    \$\begingroup\$ And if I should want to write a Verilog Compiler? :) What then? \$\endgroup\$
    – user3045
    Apr 4 '11 at 0:32
  • 2
    \$\begingroup\$ @kurtnelle If you want to write a Verilog compiler, and you have the talent to do that, then you will have no problems getting a job at Xilinx, Altera, or one of the other FPGA companies and they would be willing to share the transistor-level design files with you. :) I say that half-jokingly, because someone with that talent could easily get a job doing it, but also there is a lot of fine details that companies like Xilinx simply won't give out and there is little hope in writing a compiler for Xilinx parts without that info. \$\endgroup\$
    – user3624
    Apr 4 '11 at 0:43
  • \$\begingroup\$ @David Kessner So the reason why I can't seem to find this information may be because it's "a secret"? This throws a huge wrench into my plans :( \$\endgroup\$
    – user3045
    Apr 4 '11 at 0:49
  • 4
    \$\begingroup\$ It's a trade secret. Besides, if a company like Xilinx released that info then they would have a huge technical support nightmare trying to support customers doing stuff like that-- as it would bee very easy to make the FPGA self destruct. \$\endgroup\$
    – user3624
    Apr 4 '11 at 1:28
  • \$\begingroup\$ Das not good. Das not good at all. \$\endgroup\$
    – user3045
    Apr 4 '11 at 2:00
1
\$\begingroup\$

To program FPGAs you need to use the tools provided by the manufacturer, in this case Xilinx. IIRC Free Webpack ISE tools support Spartan3Es.

You write your code in Verilog, VHDL, or use their schematic capture tool to generate the logic you want. Connect the top level of the logic to the desired input or output pin. Compile. You'll have a bitstream that you can program into the chip.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy