P1V Working on Parallax 1-2-3 FPGA (A7) Board
mindrobots
Posts: 6,506
in Propeller 1
I'm happy to report the P1V (Verilog version of the Propeller) is working on the Parallax 1-2-3 FPGA.
My github repository with the necessary changes is here: https://github.com/mindrobots/P1V
I've forked Jac Goudsmit's repository as it appears to be the most up to date repository based on the Parallax corporate P1V repository. Jac has done a nice job of restructuring the Parallax repository and made it very easy to build P1V's for various boards from the same code base. I intend to follow his guide and work within the scaffold he built.
My changes include only the vary basics needed to build a standard P1V that runs on the A7 version of the Parallax 1-2-3 FPGA board as well as a readme.txt file with building and loading instructions.
The P1V uses the 1-2-3 FPGA USB port in RUN mode for programming. You do NOT need a Prop Plug; however, P30 and P31 are not exposed for your use, they are "hard-wired" to the USB port in the FPGA. The used LEDs, GRN0-GRN15 are used as COG activity indicators - GRN0-GRN7 are lit when COG0-COG7 are active, GRN8-GRN15 are lit when the COGs are inactive. P1V pins 0-29 are brought out to the 3.3V I/O header on the board*. Nothing else on the board is connected to the P1V or exposed to the user in this basic configuration.
*EDIT: I just realized I haven't tested to see if these actually are 3.3V I/O pins. They are intended to be but this must be verified. Sorry!
It does require Quartus II v15 in order to build for the A7 FPGA. Total time to build was about 13 minutes on my 8GB I7 laptop w/ SSD - you have the .rbf file in less time but the timing analysis takes a while to run.
Fitter Report:
Fitter Status Successful - Fri Jul 31 10:41:44 2015
Quartus II 64-Bit Version 15.0.2 Build 153 07/15/2015 SJ Web Edition
Revision Name fpga123
Top-level Entity Name fpga123
Family Cyclone V
Device 5CEFA7F23C8
Timing Models Final
Logic utilization (in ALMs) 8,523 / 56,480 ( 15 % )
Total registers 5848
Total pins 52 / 240 ( 22 % )
Total virtual pins 0
Total block memory bits 655,360 / 7,024,640 ( 9 % )
Total RAM Blocks 80 / 686 ( 12 % )
Total DSP Blocks 0 / 156 ( 0 % )
Total HSSI RX PCSs 0
Total HSSI PMA RX Deserializers 0
Total HSSI TX PCSs 0
Total HSSI PMA TX Serializers 0
Total PLLs 1 / 7 ( 14 % )
As you can see, there is plenty of room to grow a P1V design on this board.
I hope someone gets a chance to try it out!
My github repository with the necessary changes is here: https://github.com/mindrobots/P1V
I've forked Jac Goudsmit's repository as it appears to be the most up to date repository based on the Parallax corporate P1V repository. Jac has done a nice job of restructuring the Parallax repository and made it very easy to build P1V's for various boards from the same code base. I intend to follow his guide and work within the scaffold he built.
My changes include only the vary basics needed to build a standard P1V that runs on the A7 version of the Parallax 1-2-3 FPGA board as well as a readme.txt file with building and loading instructions.
The P1V uses the 1-2-3 FPGA USB port in RUN mode for programming. You do NOT need a Prop Plug; however, P30 and P31 are not exposed for your use, they are "hard-wired" to the USB port in the FPGA. The used LEDs, GRN0-GRN15 are used as COG activity indicators - GRN0-GRN7 are lit when COG0-COG7 are active, GRN8-GRN15 are lit when the COGs are inactive. P1V pins 0-29 are brought out to the 3.3V I/O header on the board*. Nothing else on the board is connected to the P1V or exposed to the user in this basic configuration.
*EDIT: I just realized I haven't tested to see if these actually are 3.3V I/O pins. They are intended to be but this must be verified. Sorry!
It does require Quartus II v15 in order to build for the A7 FPGA. Total time to build was about 13 minutes on my 8GB I7 laptop w/ SSD - you have the .rbf file in less time but the timing analysis takes a while to run.
Fitter Report:
Fitter Status Successful - Fri Jul 31 10:41:44 2015
Quartus II 64-Bit Version 15.0.2 Build 153 07/15/2015 SJ Web Edition
Revision Name fpga123
Top-level Entity Name fpga123
Family Cyclone V
Device 5CEFA7F23C8
Timing Models Final
Logic utilization (in ALMs) 8,523 / 56,480 ( 15 % )
Total registers 5848
Total pins 52 / 240 ( 22 % )
Total virtual pins 0
Total block memory bits 655,360 / 7,024,640 ( 9 % )
Total RAM Blocks 80 / 686 ( 12 % )
Total DSP Blocks 0 / 156 ( 0 % )
Total HSSI RX PCSs 0
Total HSSI PMA RX Deserializers 0
Total HSSI TX PCSs 0
Total HSSI PMA TX Serializers 0
Total PLLs 1 / 7 ( 14 % )
As you can see, there is plenty of room to grow a P1V design on this board.
I hope someone gets a chance to try it out!
Comments
Thanks!
===Jac
Cog0's green light(GRN 0) stays lit. The rest are off(GRN1-7). I can't get either the Propeller Tool or PropellerIDE to recognize the P1V.
I ran px.exe on Com3: >px.exe fpga123-A7 /P /3
and it worked fine. The P1V seems to be there after a power cycle.
I have switched to RUN from PGM and plugged and unplug the usb cable. PropTool and PropellerIDE both see Com3, but no hardware found.
Thanks
Rich
Here's a test program for the Prop123 board
It implements 128 IO lines and uses leds,pushbuttons,user io 3v3 and 2v5 and all the DAC's
Give it a try.
I wasn't able to try it with PropTool or PropellerIDE since I'm not running Windows but BST and one of the Prop Loaders (I think Heater's) see it just fine under Linux.
If you built ti correctly for the 1-2-3 FPGA, you should see GRN0 lit, GRN1-7 off and also GRN8 off and GRN9-15 lit. I added the "inactive COG" LEDs on GRN8-GRN15 since they were there. If you aren't seeing GRN9-15 lit, that makes me think there was a problem with Quartus building the correct image.
If you can zip up your .rbf file and attach it, I can try it later today on my board.
I'll also grab Jac's repo and build it from there to make sure I didn't mess up anything in doing the proper Git incantations to move things upstream.
(Of course, Brian's P1V for over-achievers may distract me but I'll try to work on the plain old standard P1V we set up! )
I need "jm_ws2812_ss" to compile
Thanks
BTW. PortC and PortD are output only and accessed thru cog registers $1FE and $1FF
Should identify as "Version 123".
No. When the PGM/RUN switch is in the RUN position it is the same as a PropPlug.
hmmmmmmmm.... have to run around. Back later.
Same with the files from MindRobot taken from Jac's repository.
I am fairly certain px.exe is doing it's job, because I see the proper led's lit when using MindRobots P1v... and when I load your .rbf file, those lights go away and I see just the red led's...
has to be a serial problem, but why would it work on your boards and not mine and why would px.exe work but not PropellerTool? Strange.
PropellerIDE does not work at all! (Version 0.30.1)
I don't normally use PropellerIDE as I found it doesn't work with some of my other boards as well.
ALL my boards work with Prop Tool
I need to find a way to run Propeller Tool somehow. It probably isn't an accurate test until I have it running on a REAL Win7 system (instead of a Vm or Wine).
I'm building from jac's repo right now. I haven't built the 1-2-3 FPGA image from there, just from my repo. I may have messed something up in getting it merged with him.
But in Rich's photos on the other thread, he did show the lights lit for COG activity, so that's a good sign.
More testing time tomorrow, hopefully.
Here's a P1V with no boot loader just a loop back test. (Worlds smallest PASM program?)
1. Set to PGM
2. px p123a7_serial_test.rbf /3
3. Set to RUN
Using PST at any baud rate you should get echo of received data.
It sound like your FT231x USB is OK but maybe a mux/connection issue to the FPGA?
Cheers
Brian
Edit: BTW Terminal in PropellerIDE doesn't work with the loop back test either!
Will give it a try. Right now I'm betwixt and between and away from my P123. I actually have more than enough to get started. Most of what I am concerned about I want to try out without my P1V4Cog variant in there... just to see if there is an issue. When I first modified one of Terasic's camera projects, I noticed that there was noise in the image... even though my P1V variant wasn't connected... it was just sitting there, waiting to be connected. When I went back and properly sized some of the involved registers and eliminated unused registers, the noise magically went away... So, to debug this rather interesting possibility, I need to start out with just the memory, vga and camera interfaces before I add the P1V. Everything seems in order to start that. Have to get rid of the rug rat and clear my day to do that:)
Thanks,
Rich
Sorry it took so long to get back to you especially without much helpful news.
I finally dug out my Windows desktop and fired it up. After updating some software, I plugged in my 1-2-3 FPGA board with the standard P1V image loaded. Once the board loaded the FPGA image into the FPGA, it showed up in PropellerTool v1.3 as a P1 when I hit F7. I was able to load Spin programs into it without any problems.
Win 7
Propeller Tool 1.3
Shows up as FT231x on Com 25
FTDI driver is date 1/27/2014 and version is 2.10.0.50 built by WinDDK
It also shows up and is programmable from BST on Windows (same FTDI drivers and device, it should!)
Give us an update when you get a chance. I can help out better now since I also have a REAL Win7 system available.
Brian the .rbf loads without a hitch. When I try to run the spin file with PropellerTool
Compile Current->load ram... it doesn't find the Propeller.
I'm using Propeller Tool 1.3 Windows 8.1
I've attached a picture of the control panel reports... doesn't look like that is the problem.
I have also tried several different cables... all of them work with px... none of them allows Propeller Tool to see the P1V. I am using Prog & Run correctly. I do a power cycle between Prog and Run and in Propeller Tool removing and re-inserting the usb cable doesn't help.
On some computers, I've had problems with a Prop (or virtual Prop) when plugged into a USB3.0 port on the computer. When I moved it to a USB2.0 port, it worked fine. Not to say that all USB3.0 ports are created equal but........let's just say I've stopped using my USB3.0 ports for anything other than USB3.0 peripherals.
When I plug the usb ports into the other usb ports... px won't run. When I plug a Propeller activity board(PAB) into the SAME usb hub that works with px (as Com3) the propeller on the PAB is identified but on COM8... same usb cable and port... what?
If px .exe can see the 1-2-3 FPGA as Com3, then Propeller Tool SHOULD be able to see it as Com3.
I agree completely. I am going to reboot and see if that helps.
I just looked at the Port Settings... they are stuck at 9600, 8 bits, no parity, 1 stop, no flow control.
I'm guessing those are just default port settings - not sure if they really mean anything to anybody.