Torna indietro   Hardware Upgrade Forum > Software > Programmazione

WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
Con Midnight, Blizzard tenta il colpaccio: il player housing sbarca finalmente su Azeroth insieme a una Quel'Thalas ricostruita da zero. Tra il dramma della famiglia Ventolesto e il nuovo Prey System, ecco com'è la nuova espansione di World of Warcraft
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Nuova frontiera per i robot tagliaerba, con Ecovacs GOAT O1200 LiDAR Pro che riconosce l'ambiente in maniera perfetta, grazie a due sensori LiDAR, e dopo la falciatura può anche rifinire il bordo con il tagliabordi a filo integrato
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Equilibrio e potenza definiscono il Samsung Galaxy S26+, un flagship che sfida la variante Ultra e la fascia alta del mercato con il primo processore mobile a 2nm. Pur mantenendo l'hardware fotografico precedente, lo smartphone brilla per un display QHD+ da 6,7 pollici d'eccellenza, privo però del trattamento antiriflesso dell'Ultra, e per prestazioni molto elevate. Completano il quadro la ricarica wireless a 20W e, soprattutto, un supporto software settennale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-07-2011, 18:33   #1
tonio123
Member
 
Iscritto dal: Sep 2008
Messaggi: 155
[VHDL] Aiuto urgente

So che come domanda è un po atipica, ma se qualcuno mi potesse aiutare gliene sarei grato.
Allora praticamente devo realizzare una rete asincrona con 2 ingressi A e B e 2 uscite P e Q. La rete parte con P e Q a "00", al primo fronte di salita di A la rete passa allo stato con uscite "01", in seguito al primo fronte di salita di B le uscite passano a "10", infine quando B torna a '0' le uscite ritornano a "00" e il processo può ripartire.
Il codice che sono riuscito a creare è il seguente
Codice:
-- Tool versions: 
-- Description: 
--
-- Dependencies: 
--
-- Revision: 
-- Revision 0.01 - File Created
-- Additional Comments: 
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

-- Uncomment the following library declaration if using
-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;

-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity asincrone_8 is
    Port ( A : in  STD_LOGIC;
           B : in  STD_LOGIC;
           P : inout  STD_LOGIC;
           Q : inout  STD_LOGIC);
end asincrone_8;

architecture Behavioral of asincrone_8 is
signal stato_interno_rete: STD_LOGIC_VECTOR(1 downto 0):="00"; --tiene traccia dello stato interno in cui si trova la rete
signal a_last: STD_LOGIC:='0'; --ultimo valore di a
signal b_last: STD_LOGIC:='0'; --ultimo valore di b

begin
	
	funzionamento : process(A, B, P, Q, a_last, b_last, stato_interno_rete ) is 
	begin
	
		case stato_interno_rete is
				when "00" => if a_last='0' and A='1' then  --transizione da fase 0 a fase 1
									P<='0'; Q<='1'; stato_interno_rete<="01";
									a_last<=A; b_last<=B;
									else --se non ci sono le condizioni per la transizione aggiorno i valori di a_last e b_last
									a_last<=A; b_last<=B;
									end if;
				when "01" => if b_last='0' and B='1' then  --transizione da fase 1 a fase 2
									P<='1'; Q<='0';  stato_interno_rete<="10";
									a_last<=A; b_last<=B;
									else
									a_last<=A; b_last<=B;
									end if;
				when "10" => if b_last='1' and B='0' then --transizione da fase 2 a fase 0
									P<='0'; Q<='0';  stato_interno_rete<="00";
									a_last<=A; b_last<=B;
									else 
									a_last<=A; b_last<=B;
									end if;
				when others=>	 a_last<=A; b_last<=B;	stato_interno_rete<="00"; 
		end case;
			
	end process funzionamento;
	
end Behavioral;
Quando vado a simularla funziona perfettamente facendo una simulazione funzionale, cioè basata solo sul codice. Mentre se faccio una simulazione post-sintesi e routing la rete smette di funzionare e le due uscite rimangono fisse sullo 0.
Spero di essere stato abbastanza chiaro, spero che qualcuno possa aiutarmi.
Grazie in anticipo.
tonio123 è offline   Rispondi citando il messaggio o parte di esso
Old 25-07-2011, 09:31   #2
ingframin
Senior Member
 
L'Avatar di ingframin
 
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
Che tool hai usato per la sintesi? Hai fatto la sintesi per FPGA o per un asic?
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
ingframin è offline   Rispondi citando il messaggio o parte di esso
Old 25-07-2011, 18:14   #3
tonio123
Member
 
Iscritto dal: Sep 2008
Messaggi: 155
Quote:
Originariamente inviato da ingframin Guarda i messaggi
Che tool hai usato per la sintesi? Hai fatto la sintesi per FPGA o per un asic?
Ho usato xilinx ISE e la sintesi è per FPGA
tonio123 è offline   Rispondi citando il messaggio o parte di esso
Old 25-07-2011, 20:46   #4
starfred
Senior Member
 
Iscritto dal: Jul 2011
Messaggi: 381
per esperienza, metti sempre dei FF agli ingressi. Spesso e volentieri risolve il problema
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX
starfred è offline   Rispondi citando il messaggio o parte di esso
Old 25-07-2011, 21:23   #5
tonio123
Member
 
Iscritto dal: Sep 2008
Messaggi: 155
Quote:
Originariamente inviato da starfred Guarda i messaggi
per esperienza, metti sempre dei FF agli ingressi. Spesso e volentieri risolve il problema
si ma è asincrona, non ho un clock con cui comandare i FF. Comunque saprei come realizzarla tramite schematico sintetizzandola direttamente, ma in questo caso la dovevo realizzare tramite codice vhdl e non riesco a farla funzionare una volta sintetizzata, anche se prima della sintesi funziona tutto perfettamente.
tonio123 è offline   Rispondi citando il messaggio o parte di esso
Old 26-07-2011, 11:39   #6
kevinpirola
Member
 
Iscritto dal: Sep 2010
Messaggi: 102
Tu dici che secondo te non dovresti usare i flipflop, invece a me è venuta in mente una cosa del genere.

Si suppone che abbiamo come ingressi A e B.

Da come l'hai detto sai che A viene prima di B a quanto ho capito

perciò hai che al fronte di salita di A devi avere in uscita 01

e al fronte di salita di B devi avere 10.

Io l'ho immaginato così:

A ---- [Buffer Tristate]---C[FlipFlop T]--- uscita bit - signific
B --------|>--^
L---------------------C[FlipFlop T]--- uscita bit + signific (questa uscita è collegata all'ingresso di clock del flipflop sopra insieme alla linea che già c'è)

Un B_n va collegato al reset (che supporremo negato ovvero che si aziona a livello basso) del secondo flipflop.

Entrami i T sono collegati alla costante 1.

Succederà questo.

A sale a 1, B = 0 perciò il buffer tristate è aperto (tra b e il buffer c'è un inverter) il FlipFlop 1 sente un fronte di salita e commuta, T è 1 perciò nega il suo valore (che supponiamo aver settato inizialmente a 0). Avremo in uscita 01

A questo punto B sale da 0 a 1, disattiva il buffer, il secondo flipflop sente un fronte di salita e commuta da 0 (iniziale) a 1, essendo però questa uscita collegata anche al primo flipflop (al clock) anche esso sente un fronte di salita e commuta (da 1 di prima a 0). In uscita avrò perciò 10.

Quando B torna a 0 il flipflop B si resetta.



Io l'ho pensata così tu cosa ne dici? Come hai fatto tu l'analisi cartacea?
kevinpirola è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
Le fotografie dell'eclissi solare e dell...
Oracle AI Database si potenzia con nuove...
Russia offline: blackout internet mobile...
Gemini, Google investe 30 milioni per la...
Roborock Qrevo Edge S5A: 17.000 Pa, acqu...
Resa pubblica la foto della ''Terra che ...
Il robot che ha piegato 200 scatole di f...
SteelSeries Aerox 3 Wireless Gen 2: nuov...
"Quasi sociopatico": Sam Altma...
Star Wars Eclipse in difficoltà: ...
Gestione del team e romance organiche: l...
Intel lancia Core Ultra X9 378H: hardwar...
Tomodachi Life non supporterà Handheld M...
Identificati i boss di REvil e GandCrab:...
Google Chrome 148 introduce il caricamen...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:59.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v