Op 19 maart 2013 19:05:32 schreef RS2^Racer^:
[...]
Zou je hier wat meer info over willen geven?
Je hebt de programmer uit deze post gebouwd?:
http://www.circuitsonline.net/forum/view/message/1490464#1490464
Ik heb inderdaad die programmer gebruikt. Als je ispLEVER classic van lattice heb je de ontwikkelomgeving van de oudere cpld's van lattice. Je kan hier met een HDL(verilog en VHDL) of met een schema een ontwerp maken die je op de CPLD kan programmeren. Als je niks weet van hardware description languages kan je dus gewoon een digitaal schema uittekenen die je er dan op kan programmeren.
Verilog is opzichzelf niet al te ingewikkeld, maar je moet niet in software gaan denken. Je beschrijft echte hardware dus als je iets schrijft zou je je er ook wat bij voor moeten kunnen stellen in hardware.
De programmer van die site is het schema van de officiële programmer van lattice. De programmer wordt dus normaal ondersteunt in de software en de drivers werden mee geïnstalleerd. De drivers werkte onder windows 7 /8, maar als ik mijn verilog code wou synthetiseren krijg ik errors. Onder windows xp werkte het wel goed.
Hieronder is mijn testcode voor de matrix. Het doet echt niks bijzonders nog behalve een paar tellers te laten lopen en aan de hand daarvan wat te weergeven op het scherm.
verilog code:
module Test( input sysclk, // system clock 18.432/32 = 576kHz
input dor, // data in from shift register
input ledtin, // input from comparator
input d_in, // data from optical input
output d_out, // data out to optical output
output dr, // data out
output en, // enable shift register
output clk, // clk shift register
output strobe, // latch shift register
output a, // row select bit 0
output b, // row select bit 1
output c, // row select bit 2
output g1, // enable row select chip 1 (active low)
output g2); // enable row select chip 2 (active low)
reg [3:0]row = 0;
reg [8:0]column = 0;
reg strobe = 0;
assign d_out = dor;
assign {g2, c, b, a} = row;
assign g1 = !g2;
assign en = 0;
assign clk = sysclk;
assign dr = column[2];
always @(posedge sysclk)
begin
if(column < 8'd240)
begin
column = column + 1'b1;
strobe = 0;
end else begin
column = 0;
strobe = 1;
end
end
always @(posedge strobe)
begin
row = row + 1'b1;
end
endmodule