Pico Blaze Dist ROM

FPGASynth.PicoBlazeDistROM History

Hide minor edits - Show changes to markup

October 30, 2010, at 08:36 PM by 108.13.196.146 -
Changed line 47 from:
to:

\\

October 30, 2010, at 08:35 PM by 108.13.196.146 -
Changed lines 5-6 from:

It is possible to use up to 1024 locations x 18 bits of distributed RAM instead of a block RAM to store the machine code that PicoBlaze will execute.

to:

It is possible to use up to 1024 locations x 18 bits of distributed RAM instead of a block RAM to store the machine code that PicoBlaze will execute. The procedure requires that you are somewhat familiar with the Core Generator.

October 30, 2010, at 08:27 PM by 108.13.196.146 -
Changed line 52 from:

13) Run ISE to synthesize and Test it!

to:

13) Run ISE to synthesize and test it!

October 30, 2010, at 08:25 PM by 108.13.196.146 -
Changed lines 24-26 from:

7) Set the core generator to use:\\

to:

7) Select from the core types to generate RAM, specifically, distributed RAM.

8) Set the core generator to use:\\

Changed lines 32-36 from:

8) Tell the generator to use the <project.COE> file that you edited.

9) Let the core generator run - this will take several minutes.

10) When core generator is finished, it will have created several files that should be copied into the ISE project which contains the PicoBlaze instantiation. In my case, I copied the following files:\\

to:

9) Tell the generator to use the <project.COE> file that you edited.

10) Let the core generator run - this will take several minutes.

11) When core generator is finished, it will have created several files that should be copied into the ISE project which contains the PicoBlaze instantiation. In my case, I copied the following files:\\

Changed lines 48-52 from:

11)

to:

Note: I am not sure that ALL of the files above need to be copied. I did, however, successfully test this with the files I list above.

12) Once the files are copied to the ISE project, you will need to modify the HDL code that instantiates the ROM for PicoBlaze to use dist_mem_gen_v3_4.v (or whatever name you used if you renamed it) instead of the <project>.v file. This will also require editing the instantiation line to include the "address" and "instruction" objects used by kcpsm3.v

13) Run ISE to synthesize and Test it!

October 30, 2010, at 08:20 PM by 108.13.196.146 -
Changed line 29 from:
to:

\\

October 30, 2010, at 08:19 PM by 108.13.196.146 -
Changed lines 24-29 from:

7) Set the core generator to use:

 data width should be 18
 data depth should be no more than 1024
 Select to generate Distibuted ROM.
 Select to register the output (but NOT the input)
to:

7) Set the core generator to use:
data width should be 18
data depth should be no more than 1024
Select to generate Distibuted ROM.
Select to register the output (but NOT the input)

Changed lines 34-45 from:

10) When core generator is finished, it will have created several files that should be copied into the ISE project which contains the PicoBlaze instantiation. In my case, I copied the following files: dist_mem_gen_v3_4.asy dist_mem_gen_v3_4_dist_mem_gen_v3_4_xst_1.ngc_xst.xrpt dist_mem_gen_v3_4_flist.txt dist_mem_gen_v3_4.mif dist_mem_gen_v3_4.ngc dist_mem_gen_v3_4.sym dist_mem_gen_v3_4.v dist_mem_gen_v3_4.veo dist_mem_gen_v3_4.xco dist_mem_gen_v3_4_xmdf.tcl

to:

10) When core generator is finished, it will have created several files that should be copied into the ISE project which contains the PicoBlaze instantiation. In my case, I copied the following files:
dist_mem_gen_v3_4.asy
dist_mem_gen_v3_4_dist_mem_gen_v3_4_xst_1.ngc_xst.xrpt
dist_mem_gen_v3_4_flist.txt
dist_mem_gen_v3_4.mif
dist_mem_gen_v3_4.ngc
dist_mem_gen_v3_4.sym
dist_mem_gen_v3_4.v
dist_mem_gen_v3_4.veo
dist_mem_gen_v3_4.xco
dist_mem_gen_v3_4_xmdf.tcl

October 30, 2010, at 08:17 PM by 108.13.196.146 -
Changed lines 24-28 from:

7) data width should be 18

   data depth should be no more than 1024
   Select to generate Distibuted ROM.
   Select to register the output (but NOT the input)
to:

7) Set the core generator to use:

 data width should be 18
 data depth should be no more than 1024
 Select to generate Distibuted ROM.
 Select to register the output (but NOT the input)
October 30, 2010, at 08:15 PM by 108.13.196.146 -
Changed lines 24-27 from:

7) Select to generate Distibuted ROM.

to:

7) data width should be 18

   data depth should be no more than 1024
   Select to generate Distibuted ROM.
   Select to register the output (but NOT the input)

8) Tell the generator to use the <project.COE> file that you edited.

9) Let the core generator run - this will take several minutes.

10) When core generator is finished, it will have created several files that should be copied into the ISE project which contains the PicoBlaze instantiation. In my case, I copied the following files: dist_mem_gen_v3_4.asy dist_mem_gen_v3_4_dist_mem_gen_v3_4_xst_1.ngc_xst.xrpt dist_mem_gen_v3_4_flist.txt dist_mem_gen_v3_4.mif dist_mem_gen_v3_4.ngc dist_mem_gen_v3_4.sym dist_mem_gen_v3_4.v dist_mem_gen_v3_4.veo dist_mem_gen_v3_4.xco dist_mem_gen_v3_4_xmdf.tcl

11)

October 30, 2010, at 08:10 PM by 108.13.196.146 -
Changed lines 18-19 from:
to:

Leave the RAM initialization data in the file (should come immediately after the "memory_initialization_vector=" line).

October 30, 2010, at 08:09 PM by 108.13.196.146 -
Added lines 8-26:

1) Write and debug your PSM file using block RAM first - this will allow you to quickly compile and test your code. The next few steps can take a good deal of time, so it is important to know that the code works correctly in a block RAM before trying to convert to distributed RAM.

2) Find the .COE file that KCPSM3.EXE produced - this file contains the initialization data for the RAM. It will be named <PROJECT>.COE where <PROJECT> is the name you gave the project and supplied to KCPSM3.EXE.

3) Create a directory for using the core generator.

4) Copy the .COE file (not ROM_form.coe, only the <project>.COE file) to a directory you just created. Edit the .COE file with a text editor and remove the coefficient lines except for:

memory_initialization_radix=16;
memory_initialization_vector=

5) Open the Core Generator

6) Create a new project in the directory you created above.

7) Select to generate Distibuted ROM.

October 30, 2010, at 08:01 PM by 108.13.196.146 -
Added lines 4-7:

It is possible to use up to 1024 locations x 18 bits of distributed RAM instead of a block RAM to store the machine code that PicoBlaze will execute.

The following procedure can accomplish this:

October 30, 2010, at 07:59 PM by 108.13.196.146 -
Added lines 1-3:

Author: Scott Gravenhorst

Using PicoBlaze with distributed ROM program storage