- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
Third Release of KCPSM6 (What's New?)
[ Edited ]- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
10-06-2011 02:02 AM - last edited on 10-06-2011 04:49 AM
Third Release of KCPSM6 (What's New?)
The third release of KCPSM6 is now available for download from the PicoBlaze Lounge.
www.xilinx.com/picoblaze and download ‘KCPSM6_Release3_30Sept11.zip
The main purpose of this release is to provide support for the 7-Series of devices (Artix-7, Kintex-7 and Virtex-7) and the ISE 13.x tools. The good news is that the 7-Series harmonized architecture means that KCPSM6 is as perfectly optimised to these devices as it is when using a Spartan-6 or Virtex-6 device.
Here is a summary of what you will find new in the third release.
Hardware
In real terms nothing has changed and certainly no changes have been made to KCPSM6 itself. All the changes that have taken place are associated with the ‘ROM_form’ templates. Not surprisingly these changes mainly reflect the addition of 7-Series. The default ‘ROM_form’ template now supports generation of memory and JTAG Loader for 7-Series devices when the ‘C_FAMILY’ generic is set to “7S”. Three additional ‘production’ templates have also been provided to support 1K, 2K and 4K memories in 7-Series devices.
The one thing that users should be aware of is that fundamental changes to the libraries contained in ISE 13.x necessary to support 7-Series devices mean that the ‘ROM_form’ templates provided in this third release are not suitable when using ISE 12.x (which did not support 7-Series). So if you want to continue using ISE 12.x for a while then just keep using the templates from release 2 (a copy of the default template from release 2 is provided with Release 3 if you need it).
Optimised UART Macros
This release is the first to include new UART transmitter and receiver macros that have been fully optimised for the LUT6 architecture of Spartan-6, Virtex-6 and 7-Series devices. Each macro occupies just 5 Slices inclusive of a 16-character FIFO buffer. UART specific documentation is provided along with a simple KCPSM6 reference design.
Documentation
It is with mixed feelings that I report that the ‘READ_ME_FIRST.txt’ file is quite a bit bigger in this release! Please allow me to make it clear that whilst I do expect users to ‘read it first’ I don’t expect them to read every word of it before they do anything else because that just wouldn’t be fun. My intention is that users should be generally aware of what is contained in this file and know that it is a good place to return to if and when they encounter issues. In other words, this file attempts to capture all of the requirements, limitations and potential issues known at the time of the third release. Hopefully none of these will impact you but if they do then this file is there to provide advice and alternatives.
User feedback has again helped to improve the accuracy of the main user guide (KCPSM6_User_Guide_30Sept11.pdf). Several of the PSM examples have been enhanced to show more coding styles supported by the KCPSM6 assembler.
Assembler
For full details of the assembler usage and example syntax please remember to look in ‘kcpsm6_assembler_readme.txt’ and ‘all_kcpsm6_syntax.psm’.
The KCPSM6 assembler has continued to work well with no significant issues reported since its initial release. However, it’s always nice to improve so version 1.27 provided with this release has tried to do just that but mainly in a variety of small ways intended to make it more user friendly. These include improvements to some of the error messages to help you pinpoint incorrect PSM syntax and automatic replacement of ‘non-breaking space’ characters (ASCII code 160) with a traditional space character (ASCII code 32) if encountered in the PSM file.
Those of you that prefer to invoke the assembler from a batch file may be interested to learn that the there is now a ‘–c’ switch that can be used to specify the maximum size for your program if it is to be less than 4K. This can prove to be of most value when performing rapid iterations using JTAG Loader to develop a program for a smaller memory (e.g. 1K instructions). In the speed and the excitement it is possible to exceed the code space available in your hardware without noticing so using the ‘-c’ switch will trap any overflow and bring the assembler to a halt so that you are forced to notice your excess!
The only addition to the actual PSM syntax is an option to locally invert a value defined by a CONSTANT directive before it is used in an instruction. Here is a simple example of its use…
Imagine the common requirement to set or clear a particular bit in a register. The bit can be nicely identified using a CONSTANT directive similar to this.
CONSTANT flag, 00000100'b ; 'flag' is assigned to bit2
Setting this bit in a register has always been straightforward…..
OR s7, flag ; Set 'flag'
However, clearing the bit is was not so obvious until KCPSM6 v1.27 provided local inversion of the constant…
AND s7, ~flag ; Clear 'flag'
The tilde (~) preceding the name of the constant directs the assembler to invert all bits of the original constant value before inserting it into the instruction. So in this example the instruction receives a constant of 11111011’b which provides the bit mask required for the AND instruction without having to define a separate constant.
JTAG Loader
Except for the addition of support for 7-Series in the ‘ROM_form’ template there have been no functional changes in this release. The circuit definition of the JTAG Loader circuit contained in the ‘ROM_form’ template has undergone some revision purely to reduce its hierarchy and present an overall cleaner presentation (i.e. when seen in the Project Navigator).
Have fun!
Senior Staff Engineer, Applications Specialist, Xilinx UK





Contact Us
Connect with us on Facebook
Follow us on Twitter
Connect with us on LinkedIn
Watch us on YouTube
Join our Community
Subscribe to Newsletter