J
Joseph H Allen
Guest
I've recently discovered that Lattice MachXO2 is quite a nice family of
low-end FPGAs. I like especially the built-in oscillator (but +/- 5.5% is
not good enough for async serial- +/- 1% would be better) and the built-in
1.2V core linear regulator which allows operation of the chip with 3.3V only
(next generation they should work on an integrated switching regulator). I
can also wish for more analog peripherals (ADC, comparators, anything I can
find on PIC microcontrollers...).
Anyway, they certainly make the system cost lower when compared with Altera
or Xilinx.
Also nice is the MachXO2 breakout board. The feature I like is that the
built-in USB programmer chip from FTDI is a dual-function device. It has
both the JTAG programmer, but also has a USB-to-RS-232 converter which shows
up as a separate USB device in Windows. I can have a console serial
connection with PuTTY and at the same time have the Lattice Programmer.
Very nice.
It's been an interesting experience using Lattice Diamond. I think just a
few minor tweeks would make it a lot more usable:
Dump the whole multiple-implementation within one design concept. Most
projects are only going to have single implementaton, and I think it's
reasonable to create a new project for a new implementaion (the new project
could use the same source files an existing one to get the same effect as
multiple implementations). Anyway, this would reduce clutter.
I got confused when trying to change the PULLMODE using the spreadsheet
view. The problem is that spreadsheet view does not consider the .lpf file
as changed until you actually move off of the cell you just modified. I
think this is a straight bug.
There is a run-manager which lets you select an implementation and has its
own button for "Run". When you run this way, the Export Files (like JEDEC
or bitstream files) process is not automatically run.
But then there is the "Process" pulldown on the main menu bar. This also
has "Run" and "Run All", but they are disabled unless you select something
from the Process pane. "Run All" does actually run the Export Files
process.
Anyway, it's pointless that there are multiple ways to run. Again, dump the
multi-implementation stuff and have a single run-all button.
I tried the Reveal logic analyzer, but no luck first time. After insertion
I can no longer place and route the design with the only error shown as
"Done: error 1". Even after disabling Reveal (also not obvious how this is
done), the error remains.
--
/* jhallen@world.std.com AB1GO */ /* Joseph H. Allen */
int a[1817];main(z,p,q,r){for(p=80;q+p-80;p-=2*a[p])for(z=9;z--q=3&(r=time(0)
+r*57)/7,q=q?q-1?q-2?1-p%79?-1:0%79-77?1:0<1659?79:0>158?-79:0,q?!a[p+q*2
]?a[p+=a[p+=q]=q]=q:0:0;for(;q++-1817printf(q%79?"%c":"%c\n"," #"[!a[q-1]]);}
low-end FPGAs. I like especially the built-in oscillator (but +/- 5.5% is
not good enough for async serial- +/- 1% would be better) and the built-in
1.2V core linear regulator which allows operation of the chip with 3.3V only
(next generation they should work on an integrated switching regulator). I
can also wish for more analog peripherals (ADC, comparators, anything I can
find on PIC microcontrollers...).
Anyway, they certainly make the system cost lower when compared with Altera
or Xilinx.
Also nice is the MachXO2 breakout board. The feature I like is that the
built-in USB programmer chip from FTDI is a dual-function device. It has
both the JTAG programmer, but also has a USB-to-RS-232 converter which shows
up as a separate USB device in Windows. I can have a console serial
connection with PuTTY and at the same time have the Lattice Programmer.
Very nice.
It's been an interesting experience using Lattice Diamond. I think just a
few minor tweeks would make it a lot more usable:
Dump the whole multiple-implementation within one design concept. Most
projects are only going to have single implementaton, and I think it's
reasonable to create a new project for a new implementaion (the new project
could use the same source files an existing one to get the same effect as
multiple implementations). Anyway, this would reduce clutter.
I got confused when trying to change the PULLMODE using the spreadsheet
view. The problem is that spreadsheet view does not consider the .lpf file
as changed until you actually move off of the cell you just modified. I
think this is a straight bug.
There is a run-manager which lets you select an implementation and has its
own button for "Run". When you run this way, the Export Files (like JEDEC
or bitstream files) process is not automatically run.
But then there is the "Process" pulldown on the main menu bar. This also
has "Run" and "Run All", but they are disabled unless you select something
from the Process pane. "Run All" does actually run the Export Files
process.
Anyway, it's pointless that there are multiple ways to run. Again, dump the
multi-implementation stuff and have a single run-all button.
I tried the Reveal logic analyzer, but no luck first time. After insertion
I can no longer place and route the design with the only error shown as
"Done: error 1". Even after disabling Reveal (also not obvious how this is
done), the error remains.
--
/* jhallen@world.std.com AB1GO */ /* Joseph H. Allen */
int a[1817];main(z,p,q,r){for(p=80;q+p-80;p-=2*a[p])for(z=9;z--q=3&(r=time(0)
+r*57)/7,q=q?q-1?q-2?1-p%79?-1:0%79-77?1:0<1659?79:0>158?-79:0,q?!a[p+q*2
]?a[p+=a[p+=q]=q]=q:0:0;for(;q++-1817printf(q%79?"%c":"%c\n"," #"[!a[q-1]]);}