-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!goblin3!goblin.stu.neva.ru!news.ripco.com!news.glorb.com!news-out.read
news.com!news-xxxfer.readnews.com!nx01.iad01.newshosting.com!newshosting.com!ne
wsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl
!news.neostrada.pl.POSTED!not-for-mail
Date: Wed, 09 Jul 2014 00:39:34 +0200
From: Adam Górski <gorskiamalpa@wpkropkapl>
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
Newsgroups: pl.misc.elektronika
Subject: Re: VHDL - RAM obsługujący read-during-write
References: <lphfia$oic$1@node2.news.atman.pl>
In-Reply-To: <lphfia$oic$1@node2.news.atman.pl>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Antivirus: avast! (VPS 140708-1, 2014-07-08), Outbound message
X-Antivirus-Status: Clean
Lines: 49
Message-ID: <53bc7320$0$2375$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 89-78-2-59.dynamic.chello.pl
X-Trace: 1404859168 unt-rea-a-01.news.neostrada.pl 2375 89.78.2.59:2518
X-Complaints-To: a...@n...neostrada.pl
Xref: news-archive.icm.edu.pl pl.misc.elektronika:667515
[ ukryj nagłówki ]W dniu 2014-07-08 21:07, Jakub Rakus pisze:
> Przeglądając tutoriale na temat sposobów pisania kodu HDL tak, żeby
> syntetyzator maksymalnie wykorzystał specjalizowane bloki FPGA natknąłem
> się na prosty przykład pamięci RAM obsługującej operacje typu read
> during write:
>
> ARCHITECTURE rtl OF single_clock_ram IS
> TYPE MEM IS ARRAY(0 TO 31) OF STD_LOGIC_VECTOR(2 DOWNTO 0);
> SIGNAL ram_block: MEM;
> BEGIN
> PROCESS (clock)
> BEGIN
> IF (clock'event AND clock = '1') THEN
> IF (we = '1') THEN
> ram_block(write_address) <= data;
> END IF;
> q <= ram_block(read_address);
> -- VHDL semantics imply that q doesn't get data
> -- in this clock cycle
> END IF; END PROCESS; END rtl;
>
> Nie do końca rozumiem dlaczego niby to:
> q <= ram_block(read_address);
> ma się wykonać dopiero przy następnym wejściu w proces? Że niby jak jest
> spełniony IF we='1' to wszystko poza nim się nie wykona?
>
Zapomniałem odpowiedzieć na twoje pytanie.
Wykona się. Powiedziałbym że się zdarzy.
Tyle że q będzie miała starą wartość.
Dla uproszczenia wyobraź sobie że mamy tylko jedną komórkę tej pamięci.
Jedno słowo 32 bitowe.
Ram_block przyjmie nową wartość kiedy we ='1' ale PO zdarzeniu , którym
jest narastające zbocze zegara.
Kiedy występuje zbocze zegara ram_block ma ciągle starą wartość.
I właśnie ta stara wartość zostanie zatrzaśnięta w q.
Podobno dla programisty nie ma znaczenia w czym programuje, ale tu jest
wyjątkowo pod górę bo są konstrukcje które nie mają sensy z punktu
widzenia programisty.
Adam
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ
ochrona avast! Antivirus jest aktywna.
http://www.avast.com
Następne wpisy z tego wątku
- 09.07.14 23:29 Jakub Rakus
Najnowsze wątki z tej grupy
- Smar do video
- Litowe baterie AA Li/FeS2 a alkaliczne
- "ogrodowa linia napowietrzna"
- jaki zasilacz laboratoryjny
- jaki zasilacz laboratoryjny
- Puszka w ziemię
- T-1000 was here
- Ściąganie hasła frezem
- Koszyk okrągły, walec 3x AA, na duże paluszki R6
- Brak bolca ochronnego ładowarki oznacza pożar
- AMS spalony szybkim zasilaczem USB
- stalowe bezpieczniki
- Wyświtlacz ramki cyfrowej
- bateria na żądanie
- pradnica krokowa
Najnowsze wątki
- 2025-02-06 PROGRAM DOPŁAT DO AUT ELEKTRYCZNYCH TO ABSURD. ZA ŚRODKI Z KPO KUPIMY NIEMIECKIE I CHIŃSKIE AUTA
- 2025-02-05 ceny OC
- 2025-02-05 Re: ceny OC
- 2025-02-05 Re: ceny OC
- 2025-02-07 Smar do video
- 2025-02-06 Litowe baterie AA Li/FeS2 a alkaliczne
- 2025-02-07 Gliwice => Business Development Manager - Network and Network Security
- 2025-02-07 Warszawa => System Architect (Java background) <=
- 2025-02-07 Warszawa => System Architect (background deweloperski w Java) <=
- 2025-02-07 Warszawa => Solution Architect (Java background) <=
- 2025-02-07 Gliwice => Ekspert IT (obszar systemów sieciowych) <=
- 2025-02-07 Lublin => Programista Delphi <=
- 2025-02-07 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2025-02-07 Dęblin => Node.js / Fullstack Developer <=
- 2025-02-07 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo