logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Tworzenie pamięci RAM16x60 w VHDL ModelSIM wykorzystując plik RAM8x2

kainorwaq 18 Sty 2021 22:45 1053 8
REKLAMA
  • #1 19193927
    kainorwaq
    Poziom 5  
    Posty: 10
    Ocena: 1
    Dzień dobry,
    zwracam się z następującym problemem:

    W laboratoriach (narzędzia cad do projektowania cyfrowych układów sterowania) z Model sima, musimy zrobić pamięć ram16x60 używając tylko i wyłącznie pliku z pamięcią ram8x2. Niestety jakolwiek bym się do tego zabrał, utworzony blok pamięci ram16x60 nie zapisuje danych.

    Jest to tylko część z tego laboratorium, z resztą sobie poradziłem, natomiast tego nie mogę ugryźć. Próbowałem to podzielić, zrobić ram8x60, potem 8x4, nic z tego, nie działa. Czy ktoś z was mógłby mi napisać kod tego bloku, albo chociaż dać wskazówke jak sie do tego zabrac?

    ram8X2
    Kod: VHDL
    Zaloguj się, aby zobaczyć kod


    ram16x60 (jest to szablon z propozycji wykładowcy jak ugryźć to zadanie, uzupełniony o moje dane) (entity takie jak poniżej)
    Kod: VHDL
    Zaloguj się, aby zobaczyć kod


    Nie wklejam swoich kodów stworzonych, bo było tego tyle, że szkoda gadać. Może ktoś bedzie w stanie pomóc, termin mam do 24 stycznia.
  • REKLAMA
  • REKLAMA
  • #3 19194183
    kainorwaq
    Poziom 5  
    Posty: 10
    Ocena: 1
    Tak jak pisałem wcześniej, probowałem wszystkiego, ale niestety.

    Mój kod z przypisaniami, który nie działa. W załączniku foto z model sima. W testbenchu do adresu 2, E, F, 1 przypisuje róznewartosci, niestety odczyt jest nieprawidłowy. Co do struktury testbencha jestem pewien bo dobrze symuluje ram8x2.
    Tworzenie pamięci RAM16x60 w VHDL ModelSIM wykorzystując plik RAM8x2


    Kod: VHDL
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #5 19194716
    kainorwaq
    Poziom 5  
    Posty: 10
    Ocena: 1
    Takie są założenia projektu i nie można tego obejść. Rezygnujemy z OE i mamy data_in i data_out.

    Port map pamięci głównej musi wyglądać tak jak w pliku wklejonym powyżej czyli:

    Kod: VHDL
    Zaloguj się, aby zobaczyć kod


    I nie można tego zmienić. Tak samo nie można ingerować w kod ram8x2. Reszte można już według własnej koncepcji, forma z "for ... generate" jest tylko propozycją.
  • #6 19195079
    JarekC
    Poziom 32  
    Posty: 1515
    Pomógł: 232
    Ocena: 400
    Próba syntezy twojego kodu to 180 błędów i ostrzeżeń.
    Głównym zagadnieniem do rozwiązania oprócz zamapowania komponentu RAM8x2 jest zbudowanie bufora trójstanowego
    dla linii danych ponieważ RAM8x2 ma port typu inout. Jeżeli tego nie zrobisz będziesz miał błędy typu "multi-source".

    Ja bym to poprawił tak:
    Kod: VHDL
    Zaloguj się, aby zobaczyć kod


    Podczas zapisu data_out jest równy data_in, jeżeli ma być inaczej np. 'Z' to musisz jeszcze poprawić kod.
  • #7 19195328
    kainorwaq
    Poziom 5  
    Posty: 10
    Ocena: 1
    Wrzuciłem na szybko, działa, wieczorem postestuje to jakimś bardziej zaawansowanym TB.

    Mam jeszcze jedno pytanie. Czym się różni tak naprawde sposób zapisu twój od mojego? W moim przypadku takim buforem trójstanowym było: temp_data i temp_data_2 w twoim: data1 i data2.
  • Pomocny post
    #8 19195349
    JarekC
    Poziom 32  
    Posty: 1515
    Pomógł: 232
    Ocena: 400
    Kod: VHDL
    Zaloguj się, aby zobaczyć kod

    U ciebie nie było wyróżnionego stanu 'Z'.
    Nie podałeś co ma się stać gdy we_1=0 lub add(3)='1', prawdopodobnie miałeś ostrzeżenie o powstaniu "latch".
    Sygnał musi przejść do stanu 'Z' bo otworzą się bufory w RAM8X2 i będzie konflikt sygnałów na szynie.

    Przy syntezie dostaniesz ostrzeżenie o zamianie Tri-State na równanie logiczne ale to jest ok bo wewnątrz nie potrzerbujesz naprawdę stanu 'Z' a zostanie to zastąpione multplexerami.
  • REKLAMA
  • #9 19196183
    kainorwaq
    Poziom 5  
    Posty: 10
    Ocena: 1
    Dziękuje, przypisanie 'Z' było głównym problemem, tak naprawde wszystkie moje kombinacje były dobre, brakowało tego fragmentu.

    Pozdrawiam.

    Moderowany przez Marek_Skalski:

    2021.01.22: Temat odblokowałem na prośbę Autora.

Podsumowanie tematu

LABEL_AI_GENERATED
W dyskusji poruszono problem tworzenia pamięci RAM 16x60 w VHDL przy użyciu komponentu RAM 8x2. Użytkownik napotkał trudności w zapisie danych w nowym bloku pamięci. Odpowiedzi wskazywały na błędy w generowaniu sygnałów OE oraz podłączeniu danych, a także na konieczność zbudowania bufora trójstanowego dla linii danych. Kluczowym rozwiązaniem okazało się dodanie stanu 'Z' do sygnałów, co pozwoliło na poprawne działanie kodu. Użytkownik podzielił się kodem oraz testbenchem, a także uzyskał wskazówki dotyczące struktury pamięci i mapowania komponentów.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA