- From: Paolo Palana <
>
- To: Lorenzo Iafolla <
>
- Cc:
- Subject: Re: [EMBEDDED] domanda su comportamento slv_reg5
- Date: Fri, 20 May 2011 14:22:46 +0200
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=FMutYviAuD4Xydm13pVhDLt8r32dwpqLNzcjgAzeDnzr6DaAJpGlDDTXzSDTy/ZdBi sSV6ukmcSFDfH9ez5QuaoOgOM7ozdKhJk80p9xjIi2yGP4HiYS9HT+nvjBb77oNZEvrK yV25nZ6LwjP8xL1Yj1QTnOhfzdseTNbFJq2Wk=
2011/5/20 Lorenzo Iafolla
<
">
>
Ciao Paolo,
da quanto capisco il comportamento di Hready (slv_reg5(1)) non ti piace...
possiamo modificare il codice in modo che sia pių semplice scrivere il driver. Cos'č che non ti piace? |
Ciao Lorenzo,
in realta' non e' che non mi piace il comportamente di Hready, e' solo che il fatto che vada ad uno (il che equivarrebbe a dire "risultato pronto" giusto?) dopo il reset potrebbe (e dico potrebbe) causare delle letture spurie dal driver che sarebbero difficilmente gestibili.
il fatto che dopo il reset Hready vada ad uno o il tempo che rimane asserito dopo la sua asserzione? In particolare, durante le normali operazioni, dopo aver elaborato il primo blocco, quando preferiresti che torni a zero Hready?
|
Questa frase mi fa sorgere un dubbio. Hready diventa uno alla fine dell'elaborazione di ogni blocco, oppure diventa 1 quando ha finito di elaborare tutti i dati che gli sono stato inviati? Cerco di spiegarmi meglio. Supponiamo di avere 2 blocchi di dati da elaborare. Leggendo la descrizione, decisamente precisa ed esaustiva, del comportamento del VHDL sembrerebbe che la procedura per comunicare i dati alla periferica e per leggere il risultato sia la seguente:
1. carico il primo blocco in RAM
2. scrivo 1 su EOB
3. faccio polling sul slave_reg5(0) per sapere quando la periferica puo' accettare un nuovo blocco
4. scrivo 0 su EOB
5. carico il secondo blocco in RAM
6. scrivo 1 su EOB
7. faccio polling sul slave_reg5(0) per sapere quando la periferica puo' accettare un nuovo blocco
8. scrivo 0 su EOB
9. faccio Polling su Hready e quando Hready=1 allora leggo i registri risultato
Adesso la domanda e': C'e' il rischio di trovare Hready ad 1 al passo 9 prima che sia stata terminata l'elaborazione del secondo blocco?
Se posso esprimere una mia opinione, mi aspetto che un bit che segnali la disponibilita' di risultati rimanga ad 1 fino a quando non viene effettuata la lettura e poi sia il software a segnalare alla periferica l'avvenuta lettura e tale segnalazione dovrebbe riportare a 0 il bit. Questo principalmente perche' non si ha la certezza di quando un pezzo di codice va in esecuzione, quindi avere un bit che rimane alto per un certo periodo di tempo e poi da solo torna a zero espone al rischio che il sistema operativo non si accorga mai che il risultato e' pronto.
Buona giornata a tutti
Paolo
A presto,
Da: Paolo Palana <
" target="_blank">
> Oggetto: [EMBEDDED] domanda su comportamento slv_reg5
A:
" target="_blank">
Data: Venerdė 20 maggio 2011, 10:44
Salve a tutti, innanzi tutto volevo avvisare che ieri sera ho fatto il porting del codice VHDL di sha1_core per la scheda che ho a disposizione. In realta' e' stata una cosa semplice. E' stato sufficiente sostituire la dual port ram usata nella CustomFifo. Pensavo comunque, se siete d'accordo, di rendere disponibile sia il codice modificato di sha1_core che l'interfaccia avalon che spero di sviluppare nel fine settimana.
A questo punto, pero', devo farvi un paio di domande sul comportamento del registro slv_reg5, in particolare sul bit 1. Allora! Simulando il dispositivo mi sono accorto che appena dato il comando di reset slv_reg5(1) va a 1. Dopo aver dato il comando di reset scrivo 1 e poi 0 su slv_reg6(1) e poi asserisco il bit EOB. Il bit slv_reg5(1) rimane ad 1 fino a 22 cicli di clock dopo aver asserito il bit EOB. Il bit di polling, nel frattempo, passa ad 1 19 cicli di clock dopo aver asserito il bit EOB (questo
suppongo significhi che la periferica e' pronta per ricevere un nuovo blocco di dati) e rimane asserito, insieme a reset slv_reg5(1), per due cicli di clock. Successivamente slv_reg5(1) passa a 0, mentre il bit di polling rimane a 1 fino a quando non scrivo 0 sul bit EOB. Quando sui quattro registri di output appare il risultato dello sha1 il bit slv_reg5(1) diventa 1 (e questo suppongo significhi che e' possibile leggere i dati dalla periferica).
Il bit slv_reg5(1) non dovrebbe diventare uno solo ed esclusivamente in corrispondenza dell'output vero e proprio dei dati? Potreste anche fornirmi, se possibile, delle coppie (input, output) che avete usato durante le vostre simulazioni?
Grazie mille Paolo -- Paolo Palana, PhD Student <
" rel="nofollow" target="_blank">
>
Dept. of Computer Science, Systems, and Industrial Engineering University of Rome "Tor Vergata", Via del Politecnico, 1 - 00133 Rome office: D1 - 21 phone : +39 06 7259 7714
|
--
Paolo Palana, PhD Student
<
">
>
Dept. of Computer Science, Systems, and Industrial Engineering
University of Rome "Tor Vergata", Via del Politecnico, 1 - 00133 Rome
office: D1 - 21
phone : +39 06 7259 7714
Archivio con motore MhonArc 2.6.16.