Verilog a FPGA (bylo FPGA Altera a NIOS)
Jan Smrz
jan.smrz na email.cz
Středa Únor 11 09:33:20 CET 2015
Zdravim,
k uvedenemu kodu bych mel par poznamek.
`include "counter.v" - obvykle je kompilovat to stejne knihovny namisto
includovani do jednoho souboru
initial begin
clock = 1; // initial value of clock
end
// Clock generator
always begin
#10 clock = ~clock; // Toggle clock every 5 ticks
end
Tady ridite jeden signal (clock) ze dvou procesu, coz vede k problemum,
Doporucuji spise
initial begin
clock <= 1;
forever
#10 clock <= ~clock; // Toggle clock every 5 ticks
end
// Connect DUT to test bench
counter U_counter (
clock,
reset,
counter_out,
enable
);
Tento zapis je spravny, ale vrele doporucuji pouzivat celkovy zapis. U pozicniho
zapisu je hrozne lehke udelat chybu, zejmena pri postupnych upravach kodu.
// Connect DUT to test bench
counter U_counter (
.clock(clock),
.reset(reset),
.counter_out(counter_out),
.enable(enable)
);
Nelze ovsem provest syntezu, chybove hlaseni Error (12061): Can't synthesize
current design -- Top partition does not contain any logic
Toto je celkem pochopitelne. Nektere konstrukty jazyka jsou urceny jen pro
verifikaci a nelze je syntetizovat (protoze neexistuje jejich ekvivalent v
cilove logice). Drive diskutovane zpozdeni #N je jednim z typickych prikladu.
J.S.
On 02/11/2015 06:17 AM, Jaroslav Buchta wrote:
> Jak definovat průběhy pro gate level simulaci?
>
> Pro RTL je nejlepsi vytvorit primo verilog soubor, v takovemto stylu?
>
> `include "counter.v"
> `timescale 1ns / 1ns
>
> module counter_tb();
> // Declare inputs as regs and outputs as wires
> reg clock, reset, enable;
> wire [7:0] counter_out;
>
> // Initialize all variables
> initial begin
> clock = 1; // initial value of clock
> reset = 0; // initial value of reset
> enable = 0; // initial value of enable
> #5 reset = 1; // Assert the reset
> #10 reset = 0; // De-assert the reset
> #10 enable = 1; // Assert enable
> #100 enable = 0; // De-assert enable
> #500 $finish; // Terminate simulation
> end
>
> // Clock generator
> always begin
> #10 clock = ~clock; // Toggle clock every 5 ticks
> end
>
> // Connect DUT to test bench
> counter U_counter (
> clock,
> reset,
> counter_out,
> enable
> );
> endmodule
> -------------------------------
> nebo se pouziva jina metoda?
>
> Nelze ovsem provest syntezu, chybove hlaseni Error (12061): Can't synthesize
> current design -- Top partition does not contain any logic
>
> Kdyz provedu syntezu samotneho counter.v, tak to jde krasne simulovat na gate
> level urovni, ale vstupni prubehy musim pokazde naklikat - neprisel jsem nejak
> na logiku v altera modelsim
> jak je jednou vytvorit a ulozit pro dalsi simulace. A vubec se to blbe dela,
> text je text...
>
> Jaky je bezny postup?
>
>
> ---
> This email has been checked for viruses by Avast antivirus software.
> http://www.avast.com
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list