Obsługa DDR SDRAM jako moduł pamięci wideo (XUPV2P)

B

BlackOps

Guest
Chcę, aby uruchomić program w C na PowerPC na Virtex2 Pro, czerpiąc wszelkie grafiki na monitorze, mój kontroler 1024x768 60Hz.

.

Będę korzystać TwinMOS 512mb CL3 PC3200 DDR SDRAM DIMM jako moduł pamięci wideo.i będzie miał do wykorzystania pamięci DDR w pamięci wideo.i myślę, że organizacja musi być jak na rysunku, który dołączony do tej wiadomości.proszę spojrzeć na.

Więc, C Program będzie realizowany na PPC.PPC VGA zapisze dane na temat zapisu FIFO, writeFIFO zapisze te dane do pamięci DDR, readFIFO inny odczyta go z pamięci DDR i przekazać go do VGActrl stanu komputera, VGActrl będzie zapisywać dane do monitora.

Myślę, że dwa bufory z określonego zakresu muszą być używane tak, że zmieni i nie będzie Glitches podczas aktualizacji obrazu.

writeFIFO zapisuje dane w BUF1, gdy BUF1 jest pełna, readFIFO rozpoczyna czytanie od BUF1.(widoczny z niebieskiej linii) i writeFIFO następnie zapisuje dane do BUF2.

wtedy, gdy BUF2 jest pełna, readFIFO rozpoczyna czytanie od BUF2 (symbolizowana czerwona linia) oraz writeFIFO następnie zapisuje dane w BUF1 ponownie.i tak dalej.Pytanie: Jak powiedzieć VGActrl stanu maszyny BUF1 (lub BUF2) jest pełna, więc można rozpocząć czytanie od niego?continiously to się dzieje, i szybko, więc obraz jest aktualizowana w czasie i wyświetlane prawidłowo.

Mam 1024x768 i 60Hz VGA kontrolera.I tak można obliczyć wysokość bufory potrzebne.
(for one buffer)

(1024x768x24) / 8 = 2.359296 MB
(dla jednego bufora)prędkość transferu będzie: 2,359296 x 60Hz = 141,55776 MB / sekundęcałkowitej pamięci video potrzebne BUF1 BUF2 = 2,359296 2,359296 = 4.718592 MB
ale głównym problemem jest teraz w DDR IP rdzenia ...Czy mogę używać Xilinx DDR Wolnego Oprogramowania IP core?
(DS425 przeciwko 2,00)będzie można użyć podwójnego buforowania opisane powyżej, Xilinx DDR IP core?czy muszę napisać własną?ok, proszę powiedz mi, co sądzisz o organizacji w całości, a nie błędy w obliczeniach ...poinformować opinię ur.i jeśli jego ok, może u mnie porady, co na początek?(i alreadyhave VHDL do generowania sygnału wideo) thanks!cya!
Przepraszamy, ale musisz logowania w celu wyświetlenia tego zajęcia

 
Cóż, mam utworzone Base System Builder projektu EDK. (XUPV2P pokładzie)i dodaje UART i 512MB pamięci dual rangi sterowniku.

Następnie utworzone własne peryferyjnych szablon dla Wolnego Oprogramowania autobusem.

Teraz jestem dodając moje VHDL kod utworzony peryferyjnych i importowanie go ponownie ..

I musi teraz interconnect to wszystko poprawnie.
generated during the peripheral creating process and modified later to act as video controller.

proszę spojrzeć na moje user_logic.vhd (plik znajduje się w: C: \ PROJEKTY \ test4 \ pcores \ video_ctrl_v1_00_a \ hdl \ VHDL)
generowanych w trakcie procesu tworzenia peryferyjnych i zmodyfikowała później do pełnienia funkcji kontrolera wideo.

Kod:-------------------------------------------------- ----------------------------

- Nazwa pliku: user_logic.vhd

- Wersja: 1.00.a

- Opis: Użytkownik logiki.

- Data: wtorek kwietnia 15 15:45:33 2008 (poprzez tworzenie i importowanie Peryferyjnych Wizard)

- VHDL standard: VHDL'93

-------------------------------------------------- ----------------------------

- Konwencje nazewnictwa:

- Aktywny niski sygnały: "* _n"

- Zegar sygnałów: "CLK", "clk_div #", "# clk_ x"

- Reset sygnałów: "pierwszy", "rst_n"

- Generics: "C_ *"

- Definiowane przez użytkownika typów: "* _Typ"

- Stan maszyny obok państwowych: "* _ns"

- Stan obecny stan maszyny: "* _cs"

- Kombinatoryczne sygnały: "* _com"

- Potokowych zarejestruj opóźnienia sygnałów: "# * _d"

- Licznik sygnałów: "* * cnt"

- Zegar włączyć sygnały: "* _ce"

- Wewnętrzne wersji port wyjściowy: "* _i"

- Urządzenia szpilki: "* _pin"

- Porty: "- nazwy zaczynają się wielką literą"

- Procesy: "* _PROCESS"

- Komponent instantiations: "<ENTITY_> I_ <# | func>"

-------------------------------------------------- ----------------------------- NIE EDYTUJ poniżej tego LINE --------------------

Biblioteka IEEE;

wykorzystania ieee.std_logic_1164.all;

wykorzystania ieee.std_logic_arith.all;

wykorzystania ieee.std_logic_unsigned.all;Biblioteka proc_common_v2_00_a;

wykorzystania proc_common_v2_00_a.proc_common_pkg.all;

- NIE EDYTUJ powyżej tej LINE --------------------- UŻYTKOWNIKA biblioteki dodaje tutaj-------------------------------------------------- ----------------------------

- Podmiot sekcji

-------------------------------------------------- ----------------------------

- Definicja Generics:

- C_DWIDTH - User logiki szerokość magistrali danych

- C_NUM_CE - User logiki chip umożliwić autobus szerokość

- C_WRFIFO_DWIDTH - Dane szerokość Napisz FIFO

- C_WRFIFO_DEPTH - Głębokość Napisz FIFO

--

- Definicja Porty:

- Bus2IP_Clk - Autobus do IP zegar

- Bus2IP_Reset - Autobus do IP zresetować

- Bus2IP_Data - Autobus do IP magistrala danych użytkownika logika

- Bus2IP_BE - Autobus do IP umożliwia bajt użytkownika logika

- Bus2IP_RdCE - Autobus do IP czytać chip umożliwić użytkownika logika

- Bus2IP_WrCE - Autobus do IP napisać chip umożliwić użytkownika logika

- Bus2IP_RdReq - Autobus do IP przeczytać wniosek

- Bus2IP_WrReq - Autobus do IP napisać wniosek

- IP2Bus_Data - IP do magistrali danych autobusem użytkownika logika

- IP2Bus_Retry - IP do magistrali retry odpowiedzi

- IP2Bus_Error - IP do magistrali błąd odpowiedzi

- IP2Bus_ToutSup - IP Bus do czasu tłumić

- IP2Bus_Busy - IP do magistrali zajęty odpowiedzi

- IP2Bus_RdAck - IP do magistrali przeczytać potwierdzenie przelewu

- IP2Bus_WrAck - IP do magistrali napisać potwierdzenie przelewu

- IP2WFIFO_RdReq - IP do WFIFO: IP przeczytać wniosek

- IP2WFIFO_RdMark - IP do WFIFO: znak początku pakiet odczytania

- IP2WFIFO_RdRelease - IP do WFIFO: Powrót WFIFO FIFO do normalnego funkcjonowania

- IP2WFIFO_RdRestore - IP do WFIFO: przywrócić WFIFO do ostatniego znaku pakietowe

- WFIFO2IP_Data - WFIFO do IP: WFIFO odczytu danych

- WFIFO2IP_RdAck - WFIFO do IP: WFIFO czytać potwierdzić

- WFIFO2IP_AlmostEmpty - WFIFO do IP: WFIFO prawie pusta

- WFIFO2IP_Empty - WFIFO do IP: WFIFO pusty

- WFIFO2IP_Occupancy - WFIFO do IP: WFIFO occupancy

-------------------------------------------------- ----------------------------Jednostka jest user_logic

ogólna

(

- ADD USER GENERYKI poniżej tego LINE ---------------

- Dodaje UŻYTKOWNIKA generycznych tutaj

- ADD USER GENERYKI powyżej tej LINE ---------------- NIE EDYTUJ poniżej tego LINE ---------------------

- Autobus parametry protokołu, nie należy dodawać lub usuwać

C_DWIDTH: integer: = 64;

C_NUM_CE: integer: = 1;

C_WRFIFO_DWIDTH: integer: = 64;

C_WRFIFO_DEPTH: integer: = 512

- NIE EDYTUJ powyżej tej LINE ---------------------

);

portu

(

- ADD USER PORTS pod tą linią ------------------

- UŻYTKOWNIKA portów dodaje tutaj

- ADD USER PORTS ABOVE THIS LINE ------------------- NIE EDYTUJ poniżej tego LINE ---------------------

- Autobus portów protokołu, nie należy dodawać lub usuwać

Bus2IP_Clk: w std_logic;

Bus2IP_Reset: w std_logic;

Bus2IP_Data: w std_logic_vector (0 do C_DWIDTH-1);

Bus2IP_BE: w std_logic_vector (0 do C_DWIDTH/8-1);

Bus2IP_RdCE: w std_logic_vector (0 do C_NUM_CE-1);

Bus2IP_WrCE: w std_logic_vector (0 do C_NUM_CE-1);

Bus2IP_RdReq: w std_logic;

Bus2IP_WrReq: w std_logic;

IP2Bus_Data: out std_logic_vector (0 do C_DWIDTH-1);

IP2Bus_Retry: out std_logic;

IP2Bus_Error: out std_logic;

IP2Bus_ToutSup: out std_logic;

IP2Bus_Busy: out std_logic;

IP2Bus_RdAck: out std_logic;

IP2Bus_WrAck: out std_logic;

IP2WFIFO_RdReq: out std_logic;

IP2WFIFO_RdMark: out std_logic;

IP2WFIFO_RdRelease: out std_logic;

IP2WFIFO_RdRestore: out std_logic;

WFIFO2IP_Data: w std_logic_vector (0 do C_WRFIFO_DWIDTH-1);

WFIFO2IP_RdAck: w std_logic;

WFIFO2IP_AlmostEmpty: w std_logic;

WFIFO2IP_Empty: w std_logic;

WFIFO2IP_Occupancy: w std_logic_vector (0 do log2 (C_WRFIFO_DEPTH))

- NIE EDYTUJ powyżej tej LINE ---------------------

);

koniec user_logic podmiotu;-------------------------------------------------- ----------------------------

- Architektura sekcji

-------------------------------------------------- ----------------------------Architektura IMP z user_logic jest- Deklaracje UŻYTKOWNIKA sygnału dodaje tutaj, jeśli to konieczne dla użytkownika logika

CZĘŚCI VGAcore IS PORT (SysClk: IN STD_LOGIC; - 100 MHz z zegarem systemowym AJ15 FPGA pin

OutClk: OUT STD_LOGIC; - 65MHz 180 stopni fazy przesunięte zegar wideo chiphsync: OUT STD_LOGIC; - Horyzontalna sygnału synchronizacji dla złącza D-sub

vsync: OUT STD_LOGIC; - Pionowa synchronizacja sygnału do złącza D-subSYNC: OUT STD_LOGIC; -! SYNC sygnału video chip

BLANK: OUT STD_LOGIC; -! Ślepej sygnału video chipRed_out: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); - 8-bitowy kolor czerwony sygnał

Green_out: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); - 8-bitowy kolor zielony sygnał

Blue_out: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); - 8-bitowy kolor niebieski sygnałRed_in: W STD_LOGIC_VECTOR (7 DOWNTO 0); - 8-bitowy kolor czerwony sygnał

Green_in: W STD_LOGIC_VECTOR (7 DOWNTO 0); - 8-bitowy kolor zielony sygnał

Blue_in: W STD_LOGIC_VECTOR (7 DOWNTO 0); - 8-bitowy kolor niebieski sygnałRow_out: OUT STD_LOGIC_VECTOR (10 DOWNTO 0);

Col_out: OUT STD_LOGIC_VECTOR (10 DOWNTO 0));END COMPONENT;zacząć- UŻYTKOWNIKA logiki wdrażania dodaje tutajvideo_ctrl_0: VGAcore

port map (

SysClk => Bus2IP_Clk,

OutClk =>

hsync =>

vsync =>

SYNC =>

BLANK =>

Red_out =>

Green_out =>

Blue_out =>

Red_in => WFIFO2IP_Data (0 do 7),

Green_in => WFIFO2IP_Data (8 do 15),

Blue_in => WFIFO2IP_Data (16 do 23),

Row_out =>

Col_out =>);------------------------------------------

- Przykładowy kod do prowadzenia dochodzenia do magistrali sygnały

------------------------------------------

IP2Bus_Data <= (others =>'0 ');IP2Bus_WrAck <= Bus2IP_WrCE (0);

IP2Bus_RdAck <= Bus2IP_RdCE (0);

IP2Bus_Busy <='0 ';

IP2Bus_Error <='0 ';

IP2Bus_Retry <='0 ';

IP2Bus_ToutSup <='0 ';koniec IMP;

 
cześć,
Ja pracuje na moim ostatnim roku M. TECH projektu.mojego projektu jest zbudowanie opengl na FPGA.teraz ja jestem obecnie pracuje obecnie wprowadzane na stronie .., w której wyświetla się zawartość pamięci na wyświetlaczu ......

i pisemne dla kierowcy VGA 800x600 75Hz (HP 7540) MONITORA- HSYNC ---!!-------------------------------------------!!-----------
- ---- ----
- !<------------------------ 28,8221 nas ------------>!
- !<----------------------- 25.05us----------->!
--

- HBLANK ---!!-------------------------------------------!!-----------
- ---- ----
- !<------------------------ 28,8221 nas ------------>!
- !<----------------------- 25.05us----------->!
--
--
- ---- ----
- VSYNC ---!!-------------------------------------------!!-----------
--
- !<------------------------ 18,7629 ms ------------>!
- <64ms>!
--To jest to, co mam, kiedy jestem projektowaniu .......proszę sprawdzić, czy są prawidłowe sygnały tego .....czy muszę niektóre procedury należy sugerować mnie .........

2) i planuje wykorzystanie pamięci RAM DDR2 ..........i am getting mylić w FRAME buforem tworzenie i orzeźwiający STAWKA ................

PROSZĘ PRZEWODNIK DLA MNIE to zrobić KROKI ........Thanks in Advance ...........

Proszę, jeśli masz jakiekolwiek materiały dotyczące tego ........

my id --- honnaraj.t (at) gmail.comthnk Ciebie

 
file:

Ok, tutaj jest podobnie jak i edycji plików generowanych user_logic.vhd:

Kod:-------------------------------------------------- ----------------------------

- User_logic.vhd - jednostka / Architektura pary

-------------------------------------------------- ----------------------------

--

- ************************************************ ***************************

- ** Copyright (c) 1995-2007 Xilinx, Inc. **

- ** **

- ** Xilinx, Inc **

- ** Xilinx tej konstrukcji jest zapewnienie, kod lub informacji "AS IS" **

- ** W związku TO YOU, do użytku wyłącznie w ROZWIJAJĄCYCH PROGRAMY I **

- ** ROZWIĄZANIE DLA URZĄDZEŃ Xilinx. Udzielenie DESIGN, kod, **

- LUB INFORMACJAMI ** Jako jedno z możliwych WYKONANIE tej funkcji, **

- ** Aplikacji lub STANDARD, Xilinx czyni NIE REPREZENTACYJNE **

- ** Tego, że jest wolna od jakichkolwiek roszczeń naruszenia **

- ** I jesteś odpowiedzialny UZYSKIWANIA żadnych praw może być potrzebna **

- ** ZA WDRAŻANIE. Xilinx WYRAŹNIE WYŁĄCZA WSZELKIE **

- ** JAKICHKOLWIEK GWARANCJI W ODNIESIENIU DO odpowiedniej wysokości **

- ** WYKONANIA, W TYM, LECZ NIE TYLKO DO JAKICHKOLWIEK GWARANCJI LUB **

- ** REPREZENTACYJNE tego, że jest wolny od ROSZCZEŃ **

- ** NARUSZENIA, DOMNIEMANE GWARANCJE PRZYDATNOŚCI HANDLOWEJ I PRZYDATNOŚCI **

- ** DO OKREŚLONEGO CELU. **

- ** **

- ************************************************ ***************************

--

-------------------------------------------------- ----------------------------

- Nazwa pliku: user_logic.vhd

- Wersja: 1.00.a

- Opis: Użytkownik logiki.

- Data: środa 16 kwietnia 14:02:56 2008 (poprzez tworzenie i importowanie Peryferyjnych Wizard)

- VHDL standard: VHDL'93

-------------------------------------------------- ----------------------------

- Konwencje nazewnictwa:

- Aktywny niski sygnały: "* _n"

- Zegar sygnałów: "CLK", "clk_div #", "# clk_ x"

- Reset sygnałów: "pierwszy", "rst_n"

- Generics: "C_ *"

- Definiowane przez użytkownika typów: "* _Typ"

- Stan maszyny obok państwowych: "* _ns"

- Stan obecny stan maszyny: "* _cs"

- Kombinatoryczne sygnały: "* _com"

- Potokowych zarejestruj opóźnienia sygnałów: "# * _d"

- Licznik sygnałów: "* * cnt"

- Zegar włączyć sygnały: "* _ce"

- Wewnętrzne wersji port wyjściowy: "* _i"

- Urządzenia szpilki: "* _pin"

- Porty: "- nazwy zaczynają się wielką literą"

- Procesy: "* _PROCESS"

- Komponent instantiations: "<ENTITY_> I_ <# | func>"

-------------------------------------------------- ----------------------------- NIE EDYTUJ poniżej tego LINE --------------------

Biblioteka IEEE;

wykorzystania ieee.std_logic_1164.all;

wykorzystania ieee.std_logic_arith.all;

wykorzystania ieee.std_logic_unsigned.all;Biblioteka proc_common_v2_00_a;

wykorzystania proc_common_v2_00_a.proc_common_pkg.all;

- NIE EDYTUJ powyżej tej LINE --------------------- UŻYTKOWNIKA biblioteki dodaje tutaj-------------------------------------------------- ----------------------------

- Podmiot sekcji

-------------------------------------------------- ----------------------------

- Definicja Generics:

- C_AWIDTH - logika użytkownika adres autobus szerokość

- C_MAX_AR_DWIDTH - User logiki maks. szerokość magistrali danych zakresy adresów

- C_NUM_ADDR_RNG - User logiki liczba zakresy adresów, które mają być dekodowane

- C_WRFIFO_DWIDTH - Dane szerokość Napisz FIFO

- C_WRFIFO_DEPTH - Głębokość Napisz FIFO

--

- Definicja Porty:

- Bus2IP_Clk - Autobus do IP zegar

- Bus2IP_Reset - Autobus do IP zresetować

- Bus2IP_Addr - Autobus do adresu IP autobus

- Bus2IP_Burst - Autobus do IP w trybie burst Kwalifikator

- Bus2IP_RNW - Autobus do IP odczytu / zapisu nie

- Bus2IP_RdReq - Autobus do IP przeczytać wniosek

- Bus2IP_WrReq - Autobus do IP napisać wniosek

- IP2Bus_Retry - IP do magistrali retry odpowiedzi

- IP2Bus_Error - IP do magistrali błąd odpowiedzi

- IP2Bus_ToutSup - IP Bus do czasu tłumić

- IP2Bus_AddrAck - Autobus adres IP do potwierdzenia

- IP2Bus_Busy - IP do magistrali zajęty odpowiedzi

- IP2Bus_RdAck - IP do magistrali przeczytać potwierdzenie przelewu

- IP2Bus_WrAck - IP do magistrali napisać potwierdzenie przelewu

- IP2WFIFO_RdReq - IP do WFIFO: IP przeczytać wniosek

- IP2WFIFO_RdMark - IP do WFIFO: znak początku pakiet odczytania

- IP2WFIFO_RdRelease - IP do WFIFO: Powrót WFIFO FIFO do normalnego funkcjonowania

- IP2WFIFO_RdRestore - IP do WFIFO: przywrócić WFIFO do ostatniego znaku pakietowe

- WFIFO2IP_Data - WFIFO do IP: WFIFO odczytu danych

- WFIFO2IP_RdAck - WFIFO do IP: WFIFO czytać potwierdzić

- WFIFO2IP_AlmostEmpty - WFIFO do IP: WFIFO prawie pusta

- WFIFO2IP_Empty - WFIFO do IP: WFIFO pusty

- WFIFO2IP_Occupancy - WFIFO do IP: WFIFO occupancy

- Bus2IP_ArData - Autobus do IP magistrala danych na adres zakresów

- Bus2IP_ArBE - Autobus do IP bajt pozwala na zakresy adresów

- Bus2IP_ArCS - Autobus do IP chip wybrać do zakresów adresów

- IP2Bus_ArData - IP do magistrali danych autobusem na zakresy adresów

-------------------------------------------------- ----------------------------Jednostka jest user_logic

ogólna

(

- ADD USER GENERYKI poniżej tego LINE ---------------

- Dodaje UŻYTKOWNIKA generycznych tutaj

- ADD USER GENERYKI powyżej tej LINE ---------------- NIE EDYTUJ poniżej tego LINE ---------------------

- Autobus parametry protokołu, nie należy dodawać lub usuwać

C_AWIDTH: integer: = 32;

C_MAX_AR_DWIDTH: integer: = 64;

C_NUM_ADDR_RNG: integer: = 1;

C_WRFIFO_DWIDTH: integer: = 64;

C_WRFIFO_DEPTH: integer: = 512

- NIE EDYTUJ powyżej tej LINE ---------------------

);

portu

(

- ADD USER PORTS pod tą linią ------------------

VideoClk: OUT std_logic;

horsync: OUT std_logic;

versync: OUT std_logic;

ChipSync: OUT std_logic;

ChipBlank: OUT std_logic;

Red_chip: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); - 8-bitowy kolor czerwony sygnał

Green_chip: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); - 8-bitowy kolor zielony sygnał

Blue_chip: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); - 8-bitowy kolor niebieski sygnał

- UŻYTKOWNIKA portów dodaje tutaj

- ADD USER PORTS ABOVE THIS LINE ------------------- NIE EDYTUJ poniżej tego LINE ---------------------

- Autobus portów protokołu, nie należy dodawać lub usuwać

Bus2IP_Clk: w std_logic;

Bus2IP_Reset: w std_logic;

Bus2IP_Addr: w std_logic_vector (0 do C_AWIDTH-1);

Bus2IP_Burst: w std_logic;

Bus2IP_RNW: w std_logic;

Bus2IP_RdReq: w std_logic;

Bus2IP_WrReq: w std_logic;

IP2Bus_Retry: out std_logic;

IP2Bus_Error: out std_logic;

IP2Bus_ToutSup: out std_logic;

IP2Bus_AddrAck: out std_logic;

IP2Bus_Busy: out std_logic;

IP2Bus_RdAck: out std_logic;

IP2Bus_WrAck: out std_logic;

IP2WFIFO_RdReq: out std_logic;

IP2WFIFO_RdMark: out std_logic;

IP2WFIFO_RdRelease: out std_logic;

IP2WFIFO_RdRestore: out std_logic;

WFIFO2IP_Data: w std_logic_vector (0 do C_WRFIFO_DWIDTH-1);

WFIFO2IP_RdAck: w std_logic;

WFIFO2IP_AlmostEmpty: w std_logic;

WFIFO2IP_Empty: w std_logic;

WFIFO2IP_Occupancy: w std_logic_vector (0 do log2 (C_WRFIFO_DEPTH));

Bus2IP_ArData: w std_logic_vector (0 do C_MAX_AR_DWIDTH-1);

Bus2IP_ArBE: w std_logic_vector (0 do C_MAX_AR_DWIDTH/8-1);

Bus2IP_ArCS: w std_logic_vector (0 do C_NUM_ADDR_RNG-1);

IP2Bus_ArData: out std_logic_vector (0 do C_MAX_AR_DWIDTH-1)

- NIE EDYTUJ powyżej tej LINE ---------------------

);

koniec user_logic podmiotu;-------------------------------------------------- ----------------------------

- Architektura sekcji

-------------------------------------------------- ----------------------------Architektura IMP z user_logic jest- Deklaracje UŻYTKOWNIKA sygnału dodaje tutaj, jeśli to konieczne dla użytkownika logika

sygnał Redin: STD_LOGIC_VECTOR (7 DOWNTO 0);

sygnał GreenIN: STD_LOGIC_VECTOR (7 DOWNTO 0);

sygnał BlueIN: STD_LOGIC_VECTOR (7 DOWNTO 0);

- Takie sygnały od podmiotu VGAcore

sygnał ColOUT: STD_LOGIC_VECTOR (10 DOWNTO 0): = "00000000000";

sygnał RowOUT: STD_LOGIC_VECTOR (10 DOWNTO 0): = "00000000000";

- seignals te są z writeFIFO

Kolumna sygnał: STD_LOGIC_VECTOR (10 DOWNTO 0): = "00000000000";

sygnał wiersz: STD_LOGIC_VECTOR (10 DOWNTO 0): = "00000000000";CZĘŚCI VGAcore IS PORT (SysClk: IN STD_LOGIC; - 100 MHz z zegarem systemowym AJ15 FPGA pin

OutClk: OUT STD_LOGIC; - 65MHz 180 stopni fazy przesunięte zegar wideo chiphsync: OUT STD_LOGIC; - Horyzontalna sygnału synchronizacji dla złącza D-sub

vsync: OUT STD_LOGIC; - Pionowa synchronizacja sygnału do złącza D-subSYNC: OUT STD_LOGIC; -! SYNC sygnału video chip

BLANK: OUT STD_LOGIC; -! Ślepej sygnału video chipRed_out: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); - 8-bitowy kolor czerwony sygnał

Green_out: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); - 8-bitowy kolor zielony sygnał

Blue_out: OUT STD_LOGIC_VECTOR (7 DOWNTO 0); - 8-bitowy kolor niebieski sygnałRed_in: W STD_LOGIC_VECTOR (7 DOWNTO 0); - 8-bitowy kolor czerwony sygnał

Green_in: W STD_LOGIC_VECTOR (7 DOWNTO 0); - 8-bitowy kolor zielony sygnał

Blue_in: W STD_LOGIC_VECTOR (7 DOWNTO 0); - 8-bitowy kolor niebieski sygnałRow_out: OUT STD_LOGIC_VECTOR (10 DOWNTO 0);

Col_out: OUT STD_LOGIC_VECTOR (10 DOWNTO 0));END COMPONENT;------------------------------------------

- Sygnały dla użytkownika logiką zakres adresów przykład

------------------------------------------

Typ BYTE_RAM_TYPE jest tablica (0 do 255) z std_logic_vector (0 do 7);

Typ DO_TYPE jest tablica (0 do C_NUM_ADDR_RNG-1) z std_logic_vector (0 do C_MAX_AR_DWIDTH-1);

sygnał ar_data_out: DO_TYPE;

sygnał ar_address: std_logic_vector (0 do 7);

sygnał ar_select: std_logic_vector (0 z 0);

sygnał ar_read_enable: std_logic;

sygnał ar_read_ack_dly1: std_logic;

sygnał ar_read_ack: std_logic;

sygnał ar_write_ack: std_logic;zacząć- UŻYTKOWNIKA logiki wdrażania dodaje tutaj

video_ctrl_0: VGAcore

port map (

SysClk => Bus2IP_Clk,

OutClk => VideoClk,

hsync => horsync,

vsync => versync,

SYNC => ChipSync,

BLANK => ChipBlank,

Red_out => Red_chip,

Green_out => Green_chip,

Blue_out => Blue_chip,

Red_in => Redin,

Green_in => GreenIN,

Blue_in => BlueIN,

Row_out => RowOUT,

Col_out => ColOUT);- Tutaj jest wdrożenie logiki wyciągnąć graficzne.

- Stan maszyny retreives pikseli RGB danych i stanowiska

- Dane z writeFIFO, porównuje pikseli pozycji z

- Bieżące Row_out i Col_out z VGAcore jednostki i

- Assignes ten RGB danych do aktualnej pikseliKolumna <= WFIFO2IP_Data (24 do 34);

Wiersz <= WFIFO2IP_Data (35 do 45);DRAW_GRAPHIC: proces (Bus2IP_Clk) jest

zacząć

if (Bus2IP_Clk'event i Bus2IP_Clk = "1"), a następnieif (kolumna = ColOUT i Row = RowOUT), a następnie

Redin <= WFIFO2IP_Data (0 do 7);

GreenIN <= WFIFO2IP_Data (8 do 15);

BlueIN <= WFIFO2IP_Data (16 do 23);

w przeciwnym razie

Redin <= "00000000";

GreenIN <= "00000000";

BlueIN <= "00000000";

end if;end if;koniec procesu;------------------------------------------

- Przykładowy kod dostępu użytkownika logiki zakresy adresów

--

- Uwaga:

- Na przykład kod przedstawiony tutaj jest pokazać jeden ze sposobów wykorzystania

- Użytkownik logiką adres zakres funkcji.
Te _Ar * * IPIC sygnały

- Są dedykowane dla tych użytkowników logiki zakresy adresów.
Każdy użytkownik logika

- Zakres adresów posiada własną przestrzeń adresową i przydzielono bitu

- Na Bus2IP_ArCS/Bus2IP_ArCE sygnały wskazane wyboru

- W tym zakresie.
Zazwyczaj te zakresy adresów użytkowników logiki są wykorzystywane do

- Wdrażanie kontrolera pamięci typu rdzeni, ale może być również wykorzystane

- W rdzeni, które potrzebują dostępu do innych przestrzeni adresowej (nie C_BASEADDR

- W oparciu), st. mostów.
Ten fragment kodu wyprowadza 1 256x64-bitowy (bajt

- Dostępny) pojedynczego portu Block RAM przez XST.

------------------------------------------

ar_select <= Bus2IP_ArCS;

ar_read_enable <= (Bus2IP_ArCS (0)) i Bus2IP_RdReq;

ar_read_ack <= ar_read_ack_dly1;

ar_write_ack <= (Bus2IP_ArCS (0)) i Bus2IP_WrReq;ar_address <= Bus2IP_Addr (C_AWIDTH-11 do C_AWIDTH-4);- Ten proces generuje czytać potwierdzić 1 zegar po czytać umożliwienia

- Zostanie przedstawiony Bram bloku.
W Bram blok ma 1 zegar opóźnienie

- Od odczytu danych umożliwiają obecnie.

BRAM_RD_ACK_PROC: proces (Bus2IP_Clk) jest

zacząćif (Bus2IP_Clk'event i Bus2IP_Clk = "1"), a następnie

if (Bus2IP_Reset = "1"), a następnie

ar_read_ack_dly1 <='0 ';

w przeciwnym razie

ar_read_ack_dly1 <= ar_read_enable;

end if;

end if;koniec procesu BRAM_RD_ACK_PROC;- Wdrożenie Block RAM (s)

BRAM_GEN: Ja w 0 do C_NUM_ADDR_RNG-1 generować

stałej NUM_BYTE_LANES: integer: = (C_MAX_AR_DWIDTH 7) / 8;

zacząćBYTE_BRAM_GEN: dla byte_index w 0 do NUM_BYTE_LANES-1 generować

sygnał barana: BYTE_RAM_TYPE;

sygnał write_enable: std_logic;

sygnał data_in: std_logic_vector (0 do 7);

sygnał data_out: std_logic_vector (0 do 7);

sygnał read_address: std_logic_vector (0 do 7);

zacząćwrite_enable <= nie (Bus2IP_RNW) oraz

Bus2IP_ArCS (i)

Bus2IP_ArBE (byte_index);data_in <= Bus2IP_ArData (byte_index * 8 do byte_index * 8 7);

ar_data_out (I) (byte_index * 8 do byte_index * 8 7) <= data_out;BYTE_RAM_PROC: proces (Bus2IP_Clk) jest

zacząćif (Bus2IP_Clk'event i Bus2IP_Clk = "1"), a następnie

if (write_enable = "1"), a następnie

RAM (CONV_INTEGER (ar_address)) <= data_in;

end if;

read_address <= ar_address;

end if;koniec procesu BYTE_RAM_PROC;data_out <= RAM (CONV_INTEGER (read_address));koniec wygenerować BYTE_BRAM_GEN;koniec wygenerować BRAM_GEN;- Wdrożenie Block RAM czytać mux

IP2BUS_ARDATA_PROC: proces (ar_data_out, ar_select) jest

zacząćprzypadku ar_select jest

gdy "1" => IP2Bus_ArData <= ar_data_out (0);

gdy inni => IP2Bus_ArData <= (others =>'0 ');

zakończenia sprawy;koniec procesu IP2BUS_ARDATA_PROC;------------------------------------------

- Przykładowy kod do prowadzenia dochodzenia do magistrali sygnały

------------------------------------------

IP2Bus_WrAck <= ar_write_ack;

IP2Bus_RdAck <= ar_read_ack;

IP2Bus_AddrAck <= ar_write_ack lub ar_read_enable;

IP2Bus_Busy <='0 ';

IP2Bus_Error <='0 ';

IP2Bus_Retry <='0 ';

IP2Bus_ToutSup <='0 ';koniec IMP;

 

Welcome to EDABoard.com

Sponsor

Back
Top