- 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.