Ive managed to build myself a working hardware "hello world" - a blinking LED. :-)
Heres are the processes I had to follow.
On the first run:
1. Compile in Quartus to produce a .pof
2. Open pof2jed, open the .pof file, click Run to make a .jed
3. Open ATMISP, add a device and assign the .jed to it, save your chain file!, then click Run to program
On subsequent runs:
1. Recompile in Quartus
2. In pof2jed simply hit the Run button (you dont need to re-open the .jed file)
3. In ATMISP, re-open the chain file, then click Run to program
It seems that ATMISP reads the .jed file into memory when the chain file is opened, rather than reading it in on each subsequent programming attempt. Oh well, I guess that makes sense, since it is a production programming tool, not an iterative development tool. :-)
Heres my test code which I developed as an EPM7032 and programmed into an ATF1502 on my ATF15XX-DK3 dev board.
(edit: tidied up code a little)
top.v
`timescale 1ns/1ps
module pof2jed_test
(
input clk,
output reg led
);
wire out;
clk_div clk_div1(
.clk(clk),
.out(out)
);
always @(posedge out) begin
led <= ~led;
end
endmodule
clk_div.v
`timescale 1ns/1ps
module clk_div
(
input wire clk,
output reg out
);
reg [15:0] count;
// localparam tc = 32767;
localparam tc = 65535;
always @(posedge clk) begin
if (count == tc) begin
count <= 16'b0;
out <= ~out;
end
else begin
count <= count + 1;
end
end
endmodule