[#467]
Re: Nadchodzi Vampire Core GOLD3 (integracja Paula/ECS/AGA z HDMI)
@Voyox,
post #466
Nie kolego. Emulacja to "udawanie" ... zasadniczo nie ma różnicy czy sprzętowe czy programowe - może być jedynie różnica w koszcie implementacji danego rozwiązania. Podam prosty przykład... mamy dekoder 4bit na wyświetlacz 7 segmentowy. Ot podajemy 0000 i wyświetla się 0. Podajemy 0101 i wyświetla się 5, podajemy 1111 i wyświetla się F. Prosta logika. Układ się popsuł, wyświetlacz nie działa. Nie ma zamiennika. Co można zrobić? Można zrobić emulator sprzętowy. Bierzemy GAL. Rozpisujemy tablicę prawdy w programie. Program upraszcza co się da i zapisuje stan wyjść w zależności od stanów wejść w formie połączeń bloków logicznych GALa. Ładujemy wsad do PLD i działa tak samo.
Z drugiej strony można zrobić emulator programowy. Bierzemy atmegę, podłączamy do 4 pinów portu wejście, a sam wyświetlacz 7 segmentowy do drugiego portu. Piszemy kawałek prostego programu:
uint8_t decode7seg[]={0x3F, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f ...}
int main()
{
uint8_t num;
while(1)
{
num=PINA&0x0F;
PORTB=decode7seg[num];
}
return 0; //tylko żeby kompiler się nie pluł.
}
Tak na szybko więc może gdzieś coś się pomyliłem, ale chyba jest ok.
Jaka jest różnica z punktu widzenia użytkownika? Ano... żadna. W obu przypadkach działa. Dlaczego więc łatwo zrobić emulator sprzętowy logiki amigowej, a do programowego nie da się zabrać tak by wstawić go w miejsce chipsetu? Aaaa... no to akurat całkiem proste. To właśnie w pętli while jest limiterem. CPLD zareaguje na stany wejściowe natychmiast, MCU musi je zinterpretować. Dodatkowo jeśli mamy za wolne MCU to może nie wychwycić sygnałów wyzwalanych zboczem. Dlatego do generacji sygnałów i tak logika programowalna jest niezastąpiona. Natomiast przy odpowiednio mocnym rdzeniu CPU interpretacja samych rozkazów procesora czy automatu skończonego chipsetu jest osiągalna. Dlatego UAE towarzyszy nam od dziesięcioleci.