I do not own a Nexys II board, but a quick look at the user guide and the schematic from the Digilent website and I can see that all the signals needed for programming the flash ROM device are available at the Spartan 3E pins. This is as I would have expected.
To program this device, you can do one of two thing:
1) The first option is a two step process in iteself. You first create the VHDL code for a Flash Programmer, that erases a block and writes your new data to the ROM. You'll need the datasheet for the Intel Flash ROM to do this. Then assign the ROM pins in the UCF file according to the table in the Digilent user guide and upload this .bit file to the platform flash. When it starts, it will execute the flash programmer code and write the ROM for you. The data you want to program is in the VHDL and thus also in the .bit file so the programmer can access the data to write to flash; or
2) the Flash ROM device does not have a JTAG interface and is thus not part of the JTAG chain. However, with a bit of work, you can use a BSDL file (Boundary Scan Description Language), available from Xilinx for FPGA on your board, and using OpenJTAG you can flip bits on the FPGA to program the device.
This "Boundary Scan Programming" of the flash device is quite common in production, however if you don't have a good Boundary Scan flash programmer it an be tedious to do it by hand using OpenJTAG commands.
I recommed option (1) since it's likely the quickest for you to accomplish. You'll need the Intel Datasheet for the StrataFlash ROM and basically send the commands to the the ROM to do an erase cycle and a write cycle for your data.
For the 20 bytes or so you want to program into ROM I'd consider a simple 20 byte flash programmer in VHDL.
However, for something more complete, there is an app note from Xilinx NOR FLASH Programmer for Spartan-3E Starter Kit. That is for another board but can be easily modified for your own board by changing the pin assignments. That appnote presents a design that programs the FPGA with a UART and a Picoblaze MCU to act as a full featured flash ROM programmer.
That depends on the rom used, it should be written in the datasheet. I'd say that \$D_0\$ is the LSB and \$D_3\$ is the MSB, but that's just a guess based on the fact that \$D_0\$ represents \$2^0\$, \$D_1\$ represents \$2^1\$ and so on.
Best Answer
There are a variety of ways of encoding more than one bit per transistor by having each transistor control an "analog" signal. That could be accomplished in a ROM, albeit at considerable cost, if one used a process that could lay down 15 slightly-different kinds of transistors that would pass different amounts of current. To read a row of bits, apply a current source to each column, turn on the row, and then measure the resulting voltage on every column.
Flash can actually operate on a somewhat similar principle, but with a twist: rather than having to manufacture transistors differently, the flash effectively applies weird voltage conditions to them in such a way as to implant or remove electrons to/from areas that are generally non-conductive. A major advantage of that approach versus one based on manufacturing different kinds of transistors is that it's possible to hit a transistor with a little bit of charge, measure whether it has received enough yet, hit it with a little more, etc. until each area has received the perfect amount of charge. Doing that is much easier and cheaper than having to tweak manufacturing processes to produce 15 different kinds of transistors directly.
It should be noted that while efficiently manufacturing ROM using multi-level techniques is harder than using such techniques in flash, ROM does have an advantage in some applications: ionizing radiation that hits a ROM while it is being accessed might cause a bit to be misread, but it will not alter the physical arrangement of transistors on the chip. By contrast, if information is stored by the distribution of charges on a chip, ionizing radiation may permanently change the content of such stored information. Consequently, manufactured ROM may be advantageous in contexts that need operate in high-radiation environments.