Hallo,
Nu het vakantie is heb ik tijd om wat te spelen met het DE1 bordje.
Ik was bezig met een decade counter op een 7 segment te laten tellen, maar ergens in het tellergedeelte gaat het mis.
De opbouw van het hele verhaal is als volgt :
(Clock 50Mhz)----->[prescaler]---(Clock 1Hz)--->[dec counter]---(4 bit's)--->[bcd 7seg decoder]---(7 bit's)--->(7 segment)
De prescaler werkt al, of beter gezegd geeft geen errors.
De decade counter heeft er wel eentje:
module Dec_Counter
(
// {{ALTERA_ARGS_BEGIN}} DO NOT REMOVE THIS LINE!
CLK, RESET, BinOut
// {{ALTERA_ARGS_END}} DO NOT REMOVE THIS LINE!
);
// {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
input CLK; //1Hz clock
input RESET;
output reg [3:0] BinOut; //4 bit uitgang
// {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!
always @ (posedge CLK) begin
BinOut = BinOut + 4'b0001; //BinOut + 0001
if ((BinOut == 4'b1010) || !RESET) begin //BinOut = 0000 als BinOut 10 is, of bij een reset
BinOut = 4'b0000;
end
end
endmodule
Hierbij krijg ik de error : [Error: Illegal wire or bus name "BinOut[3:0]" of type port]
Waarschijnlijk een stomme fout, maar ik zie niet wat er verkeerd aan is.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
ik heb geen idee wat voor brabbeltaaltje dat is , maar het is geen verilog...
module teller (
input CLK, RESET,
output reg [3:0] BINOUT);
always @ (posedge CLK) begin
BINOUT <= BINOUT +1;
if (BINOUT == 9) BINOUT <=0;
if (!reset) BINOUT <= 0;
end
endmodulevoila. dat zou het moeten doen. propere scheduled verilog.
we tellen altijd 1 op.
behalve, als we op negen staan gaan we naar nul
behalve als de reset laag wordt gaan we ook naar nul.
verilog synthesisers voeren lijnen code de LAGER staan EERST uit. ( dat noemt scheduling ). het princiepe komt simpelweg door de manier waarop een synthesizer werkt.
fouten in jouw code : je gebruikt = in pplaats van <= in clocked processen
dat gedoe met 'altera do not remove .. geen idee vanwaar dat komt.... lijkt erop dat je een wizard hebt gebruikt.
gebruik voor het gemak altidj UPPERCASE voor je signalen.
en gebruik in je modules ALTIJD positieve logica... zet op je toplevel de nodige inverters. zo voorkom je level verwarring
Die "altera do not remove" is afkomstig van de block tool uit de top level.

De BCD - 7Segment decoder komt later er nog bij.
Ik heb de naam veranderd, maar nog steeds dezelfde error.
module Dec_Counter (
input CLK, RESET,
output reg [3:0] BCDROMMEL);
always @ (posedge CLK) begin
BCDROMMEL <= BCDROMMEL + 1;
if (BCDROMMEL == 10) BCDROMMEL <= 0;
if (RESET) BCDROMMEL <= 0;
end
endmoduleDe BCDROMMEL lijkt een rare naam, maar deze is voorlopig als test om te zien of het wat uitmaakt.
Ik heb F_E's code ongeveer letterlijk overgenomen, met nog steeds dezelfde error.
[Error: Illegal wire or bus name "BCDROMMEL[3:0]" of type port]
[Error: Illegal wire or bus name "BCDROMMEL[3:0]" of type mapping]
Kan deze in het block zitten?
##EDIT##
Fout gevonden, blijkbaar is een bus in blok diagram [3..0] en in verilog [3:0] en probeert quartus je te wurgen als je ze toch dooreen durft te halen...
--> binaire teller op led's werkt, nu verder met de BCD-7Seg.
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Op 12 april 2011 16:11:22 schreef free_electron:
ik heb geen idee wat voor brabbeltaaltje dat is , maar het is geen verilog...
Psst, er staat precies hetzelfde joh! (het is ook Verilog als het niet aan jouw prive regeltjes voldoet 