P1V? Come on in, the water is fine!!!
rjo__
Posts: 2,114
in Propeller 1
I'm a hobbyist. A hacker. I am used to getting my way no matter how many wires it takes/no matter how many times I have to re-solder.
With the Propeller, I am always confident that within the technical limits... which are easy to conjure... I can do anything I want.
The Propeller is easy. It is fun. And it is practically indestructible. All very important to me.
But there are practical limitations and that is where the P1V comes in... for some engineering purposes, I'm sure that the P1v would not
be viewed the same, but for my purposes and experience, being the hacker that I am, the P1V offers nearly unlimited potential.
... but the P1V is verilog... and that is impossible for a hacker to use without a major investment of time and money ... right?
Used to be that way... less and less every day. I think the P1v and the P1v community could be very important in making the answer
a complete "NO." But not without you!!! Unless you ask the question, nobody is going to answer it... and without answers to a lot of questions in
one place... there is just a technical maze of information that is mind boggling.
I've been working on memory and camera interfaces... they both end up being incredibly simple...once you get there. The problem is getting there:)
More on this later. For right now... peruse the following code... it is a camera interface. I have left out the initialization code, module definitions how you hook it all up to get it working. I am just listing the code...I have no idea how to do this in the new forum setup... so I'll just copy the text below:
always@(posedge clk)
begin
oldpixclk<=pixclk;
oldhref<=href;
oldvsync<=vsync;
st2<=st1;
camstate<= {vsync,oldvsync,href,oldhref,pixclk,oldpixclk};
if (st2==1)begin pixelready<=0;st1<=0; end
casex(camstate)
// {vsync,oldvsync,href,oldhref,pixclk,oldpixclk}
6'b01xxxx : //vsync
begin
pixelready<=0;
vcount<=0;
hcount<=0;
even<=eveninit;
st1<=0;
pixloc<=0;
lineloc<=0;
end
6'b0x1x01 : //if linevalid(href) and negative edge of pixel clock
begin
if ((vcount<400)&&(hcount<640))
begin
even<= !even;
pixelout<=datain;
pixelready<=even;
st1<=1;
hcount<=hcount+ even;
pixloc<=lineloc+hcount;
end
end
// {vsync,oldvsync,href,oldhref,pixclk,oldpixclk}
6'bxx01xx : //at negative edge of href
begin
hcount<=0;
vcount<=vcount+1;
lineloc<=lineloc+640;
end
default : other<=1;
endcase
This code watches the camera lines... and depending upon what is going on ... feeds the data to memory... which is being concurrently displayed on a VGA monitor...
The idea here isn't to explain the code... Just to show how dog simple it is. Imagine the Pasm code you would have to write... VGA and memory interfaces are equally as simple.
What stops a hacker isn't really the verilog... it is knowing where to start.
Start with the P1V.
Regards,
Rich
With the Propeller, I am always confident that within the technical limits... which are easy to conjure... I can do anything I want.
The Propeller is easy. It is fun. And it is practically indestructible. All very important to me.
But there are practical limitations and that is where the P1V comes in... for some engineering purposes, I'm sure that the P1v would not
be viewed the same, but for my purposes and experience, being the hacker that I am, the P1V offers nearly unlimited potential.
... but the P1V is verilog... and that is impossible for a hacker to use without a major investment of time and money ... right?
Used to be that way... less and less every day. I think the P1v and the P1v community could be very important in making the answer
a complete "NO." But not without you!!! Unless you ask the question, nobody is going to answer it... and without answers to a lot of questions in
one place... there is just a technical maze of information that is mind boggling.
I've been working on memory and camera interfaces... they both end up being incredibly simple...once you get there. The problem is getting there:)
More on this later. For right now... peruse the following code... it is a camera interface. I have left out the initialization code, module definitions how you hook it all up to get it working. I am just listing the code...I have no idea how to do this in the new forum setup... so I'll just copy the text below:
always@(posedge clk)
begin
oldpixclk<=pixclk;
oldhref<=href;
oldvsync<=vsync;
st2<=st1;
camstate<= {vsync,oldvsync,href,oldhref,pixclk,oldpixclk};
if (st2==1)begin pixelready<=0;st1<=0; end
casex(camstate)
// {vsync,oldvsync,href,oldhref,pixclk,oldpixclk}
6'b01xxxx : //vsync
begin
pixelready<=0;
vcount<=0;
hcount<=0;
even<=eveninit;
st1<=0;
pixloc<=0;
lineloc<=0;
end
6'b0x1x01 : //if linevalid(href) and negative edge of pixel clock
begin
if ((vcount<400)&&(hcount<640))
begin
even<= !even;
pixelout<=datain;
pixelready<=even;
st1<=1;
hcount<=hcount+ even;
pixloc<=lineloc+hcount;
end
end
// {vsync,oldvsync,href,oldhref,pixclk,oldpixclk}
6'bxx01xx : //at negative edge of href
begin
hcount<=0;
vcount<=vcount+1;
lineloc<=lineloc+640;
end
default : other<=1;
endcase
This code watches the camera lines... and depending upon what is going on ... feeds the data to memory... which is being concurrently displayed on a VGA monitor...
The idea here isn't to explain the code... Just to show how dog simple it is. Imagine the Pasm code you would have to write... VGA and memory interfaces are equally as simple.
What stops a hacker isn't really the verilog... it is knowing where to start.
Start with the P1V.
Regards,
Rich
Comments
As you've also concluded P1V is a whole lot of fun to muck about with and opens up lots of possibilities to customize the prop design to your needs.