Qualcuno ne capisce di VHDL?

Ciao a tutti,

ho il seguente process:

*****************

process (ClkxCI,ResetxRBI) begin if ResetxRBI='0' then CRC4xDO

Reply to
Boiler
Loading thread data ...

a
.

Mi pareva di vedere qualcosa di strano nel codice, ma il mio VHDL e'molto arrugginito, per cui ho chiesto aiuto a chi ne capisce di piu' qui attorno: la risposta e'stata: " quando fai un processo con reset e clock, tutto quello che e' in "A" (vedi codice sotto), viene tradotto in un flip flop con reset, e nella sensitivity list si deve solo mettere clock e reset. Tu pero hai messo CRC4xDO solo nel ramo di reset e quindi non si traduce in un flip flop, quindi il compilatore non capisce cosa vuoi fare e ti dice che manca un valore nella sensitivity list

process (ClkxCI,ResetxRBI) begin if ResetxRBI=3D'0' then A elsif ClkxCI'event and ClkxCI=3D'1' then A end if;

CRC4xDO

Reply to
lacariatide

Un bel giorno Boiler digitò:

Nel tuo codice CRC4xDO corrisponde sempre a BITxD. Per cui puoi semplicemente togliere la riga CRC4xDO

Reply to
dalai lamah

Fatto. Il problema persiste. Suppongo che quello che non piace al compiler siano i BITxD e DataxDI a destra dei vcom -check_synthesis ../sourcecode/crc4.vhd

Model Technology ModelSim SE vcom 6.4 Compiler 2008.06 Jun 18 2008

-- Loading package standard

-- Loading package std_logic_1164

-- Loading package numeric_std

-- Compiling entity crc4

-- Compiling architecture behave_crc4 of crc4

** Warning: ../sourcecode/crc4.vhd(51): Synthesis Warning: Signal 'bitxd' is read by the process but is NOT in the sensitivity list. ** Warning: ../sourcecode/crc4.vhd(51): Synthesis Warning: Signal 'dataxdi' is read by the process but is NOT in the sensitivity list. ** Warning: ../sourcecode/crc4.vhd(52): Synthesis Warning: Signal 'bitxd' is read by the process but is NOT in the sensitivity list. ** Warning: ../sourcecode/crc4.vhd(52): Synthesis Warning: Signal 'bitxd' is read by the process but is NOT in the sensitivity list. ** Warning: ../sourcecode/crc4.vhd(52): Synthesis Warning: Signal 'dataxdi' is read by the process but is NOT in the sensitivity list. ** Warning: ../sourcecode/crc4.vhd(53): Synthesis Warning: Signal 'bitxd' is read by the process but is NOT in the sensitivity list. ** Warning: ../sourcecode/crc4.vhd(54): Synthesis Warning: Signal 'bitxd' is read by the process but is NOT in the sensitivity list. ** Warning: ../sourcecode/crc4.vhd(58): Synthesis Warning: Signal 'bitxd' is read by the process but is NOT in the sensitivity list.
Reply to
Boiler

Grazie per l'interesse :-)

Fin qui ci siamo.

L'ho tolto (vedi risposta a "dalaih lama"). Ce l'avevo messo quando non capivo perché la simulazione mi desse risultati sballati.

CRC4xDO è una porta dell'entity che sto descrivendo. Non posso lasciarlo via, ma non serve un flip-flop.

Prima era fuori dal process, ma in tal modo dopo il reset CRC4xDO andava correttamente a 0000 per poi passare però a UU00.

Insomma, se lo metto fuori il valore non viene aggiornato ad ogni clock.

Ora l'ho tolto dal ramo di reset. Il compiler si lamenta però (come detto nel post sopra) per Data e BIT.

Altre prove e tentativi di correzione devo farli domandi quando ho accesso anche al software di simulazione.

Boiler

Reply to
Boiler

On Mar 16, 9:21=A0pm, Boiler wrote: [snip]

Come detto, se togli CRC4xDO

Reply to
lacariatide

On Mar 16, 9:42=A0pm, snipped-for-privacy@gmail.com wrote: [snip]

...leggasi "col beneficio del dubbio dovuto alla mia carente memoria" (o qualcosa di simile)

Reply to
lacariatide

Un bel giorno Boiler digitò:

Non avevo notato che stavi parlando del simulatore. Credo che in simulazione il comportamento sia corretto; il simulatore internamente funziona comunque sempre a "passi discreti", seppur molto brevi (picosecondi o meno); siccome un segnale combinatorio è per definizione asincrono, esso deve essere valutato a ogni step, ed è per questo che deve far parte della sensitivity list.

Tutto questo poi perde qualsiasi importanza quando vai a sintetizzare realmente il modello, dato che in quel caso i path combinatori sono "reali" e non simulati. Anzi, più in generale:

Veramente? Io ho sempre creduto che la sensitivity list servisse soltanto per il simulatore. Quando lanci il PAR se ne accorge lui da solo se mancano segnali o se ne hai messi di troppo...

--
emboliaschizoide.splinder.com
Reply to
dalai lamah

dalai lamah ha scritto:

Cito dal mio libro di testo (H. Kaeslin, Digital Integrated Circuit Design)

HOW TO MODEL A REGISTER IN VHDL To make sure synthesis code will be met with universal acceptance, any process statement that is supposed to exhibit sequential behavior should be written in such a way as to conform with the skeleton shown in listing

4.3. A clock signal is mandatory. One optional signal is accepted for implementing an asynchronous reset function on the state register. No other signals are permitted to (re)activate the process. The reason for marking various items as disallowed is that their presence in code would render the model's behavior inconsistent with a single-edge-triggered register

Ciao Boiler

--


questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it
Reply to
Boiler

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.