Hali,
hobbiként ismerkedek a Veriloggal, így tessék ítélkezni és rám förmedni, ha nagy baromságot mondok/kérdezek. Hogyan lehet az egyik modulban előállított kétbites számlálót (konkrétan a quad-ot) egy másik modul bemenetére kötni?
Nem tudom, van-e ilyen konvenció, én capitallal írom a CPLD pinekre kimenő jeleket és lowercase a modulok közti összekötés.
module my_application(MODE,SDI,SDO,SCK,CLOCK,LD,RD,WR);
input [2:0]MODE;
input SDI,SCK,CLOCK,LD;
output RD,WR,SDO;
ctr_quad ctr_q (CLOCK,quad) ;
ctr_presc ctr_p (CLOCK,quad,MODE) ;
endmodule
module ctr_quad(clock,quad);
input clock;
output [1:0]quad; // négyes osztó
reg [1:0]quad; // négyes osztó
initial
begin
quad <= 0 ;
end
always @(posedge clock)
if (clock == 1)
begin
quad[0] = ~quad[0];
if (quad[0] == 1) quad[1] = ~quad[1];
end
endmodule
module ctr_presc(clock,quad,mode) ;
input clock;
input [2:0]mode;
input [1:0]quad;
stb., innen nem lényeges.
István
- 866 megtekintés
Hozzászólások
module my_application(MODE,SDI,SDO,SCK,CLOCK,LD,RD,WR);
input [2:0] MODE;
input SDI,SCK,CLOCK,LD;
output RD,WR,SDO;
wire [1:0] quad;
ctr_quad ctr_q (.clock(CLOCK), .quad(quad));
ctr_presc ctr_p (.clock(CLOCK), .quad(quad), .mode(MODE));
endmodule
Így sem jó?
Szerintem a top module-ba bele kell tenni a quad-ot wire [1:0]-ként, különben csak az alsó bitet köti át.
- A hozzászóláshoz be kell jelentkezni
Sajna, szintaktikai hiba.Ha nem a példányosításkor, hanem a modulban használom a .quad(quad) kifejezést,
module ctr_presc(clock,.quad(quad),mode) ;
akkor a syntax ok, csak éppen a kötés nem jön létre :(
A .clock(CLOCK) és a .mode(MODE) sem jó neki, csak clock és mode -ként fogadja el.
- A hozzászóláshoz be kell jelentkezni
Pedig a top modulban uppercase szerepelnek.
A .-os kifejezéseket példányosításkor kell használni. Milyen szintézer?
Próbáld meg akkor lehagyni a .()-okat, de a wire legyen benn a top modulban.
- A hozzászóláshoz be kell jelentkezni
iverilog
- A hozzászóláshoz be kell jelentkezni
Dobj nekem egy mailt az adatlapomon keresztül.
- A hozzászóláshoz be kell jelentkezni