Hur fixar man klockkretsar upp till 160MHz?
Som Cyr så klokt säger. Att om man har en liten CPLD så går det en del register (och IO-pinnar) om man ska skriva alla 32 bitar samtidigt till ett 32kX32 minne. Om man har en lite större FPGA är det inget problem med register men kanske med pinnar. Man kan även fundera på användningsområdet och vilka övriga funktioner man vill ha.
Det kan vara trevligt att kunna ha ett trigg-vilkor som avgör när man börjar spela in data.
Om du inte har tänkt att använda den som ett oscilloskop utan mera som en logikare. Du skrev att du ville spela in långa sekvenser på seriella interface. Då kan man enkelt komprimera datat till att bara vara '1' eller '0'. Med samma minne kan du då spela in åtta gånger så länge. Man läser in 8 bitar från DA-omvandlaren, om värdet är större än ett gränsvärde blir det en etta, annars en nolla. (man kan kanske ha två moder, oscilloskop och logikare)
Det kan vara trevligt att kunna ha ett trigg-vilkor som avgör när man börjar spela in data.
Om du inte har tänkt att använda den som ett oscilloskop utan mera som en logikare. Du skrev att du ville spela in långa sekvenser på seriella interface. Då kan man enkelt komprimera datat till att bara vara '1' eller '0'. Med samma minne kan du då spela in åtta gånger så länge. Man läser in 8 bitar från DA-omvandlaren, om värdet är större än ett gränsvärde blir det en etta, annars en nolla. (man kan kanske ha två moder, oscilloskop och logikare)
Men ett 32kx32 minne så blir det 15 adresspinnar och 32 datapinnar. Antar att man fortfarande måste använda de 32 datapinnarna kopplade till varsin I/O pinne på CPLD:n även att man skriver in varje byte för sig.
Tittade även på asynkrona minnen. Där verkade det vanligare med 128kx8 vilket ger 17 adresspinnar och 8 datapinnar. Inte lika farligt. Fast det är väl inte just minnesdelen som är det svåra.
Att bara lagra '1' och '0' för håg och låg var en tidig idé jag även hade. Känds bara lite "smal" om man väl fick allt att funka.
Tittade även på asynkrona minnen. Där verkade det vanligare med 128kx8 vilket ger 17 adresspinnar och 8 datapinnar. Inte lika farligt. Fast det är väl inte just minnesdelen som är det svåra.
Att bara lagra '1' och '0' för håg och låg var en tidig idé jag även hade. Känds bara lite "smal" om man väl fick allt att funka.
Nej, det Cyr beskriver är en databuss om 8-bitar. Du skriver fyra gånger till samma adress men enablar olika delar byte-vis av minnet. De delar som inte är enablade förblir oförändrade trots att det kan vara annat data på data-bussen än det som lagras i minnet.
Man kan även tänka sig andra mer avancerade metoder för komprimering, men för vissa av dem har man kanske passerat vad som går att göra i en CPLD och är tvungen att gå över till en FPGA.
Man kan även tänka sig andra mer avancerade metoder för komprimering, men för vissa av dem har man kanske passerat vad som går att göra i en CPLD och är tvungen att gå över till en FPGA.
Senast redigerad av babbage 28 mars 2005, 01:15:19, redigerad totalt 1 gång.
Om det nu är så att byte-enable även styr output-enable (lite osäker här) så behöver du inte koppla alla 32 databitarna till CPLD. Du kopplar ihop bit 0, 8, 16 och 24 osv så du får en enda 8bits buss. Du kan koppla ADCn direkt till denna buss också om den har en output-enable. CPLDn behöver du inte ens koppla till data-bitarna nödvändigtvis, inte om du inte vill lägga in någon trig-funktion eller så.
För övrigt så brukar det finnas 16bits versioner av de flesta synkrona SRAM (men inte 8).
För övrigt så brukar det finnas 16bits versioner av de flesta synkrona SRAM (men inte 8).