VHDL flash paměťový řadič

J

JacquesKleynhans

Guest
Ahoj kluci,

Ví někdo z jakýchkoli NAND flash ONFI vdhl kód, nebo nemá někdo nějaké zkušenosti v rozhraní NAND flash pro FPGA je bez použití IP jádra.

Pro mé mistrů projektu i nutnost vybudovat kamerový systém pro malé družice pro dálkový E pozorování.Potřebuji rozhraní fotoaparátu modul pro FPGA "Actel", protože flash základny a některé NAND flash také proto, flash na zařízení.

Fotoaparát bude pořizovat fotografie a ukládat přímo na flash, který bude později pak bude číst, a předávají na Zemi.

S přátelským pozdravem

 
Ahoj,

Co je rozhraní vašeho NAND flash?Může to být SPI.
Můžete implementovat SPI protokolu jako sběrnice a stavět hlavní regulátor, který rozhraní s fotoaparátem rozhraní.

Můžete si přečíst data z rozhraní fotoaparátu s hlavním správcem a ukládat data na NAND flash s NAND flash rozhraní protokolu (např. SPI)

Hodně štěstí ..
Ilgaz

 
Velký odpověď ....

HI Ilgaz, č. Nand Flash je propojen přímo prostřednictvím svých 16x sběrnici.např. paralelní.

Mám kódované velké státní stroj na ovládání, ale havnt zkouší to ještě, jak jsem byl jen pomocí jazyka VHDL po dobu 2 měsíců teď můj kódování technika je trochu nedbale, ale snažím se psát to takovým způsobem, aby se zcela synthesizeabe RTL Pokud jste se může.Tak jsem hledal nějaký kód na test nebo opencore změnit.

Ale zdá se, že není mnoho podpora / code availible pro asynchronní flash pam.

Mohu post můj kód ...Její jen abit velké i whould říct.

Thx

 
Micron poskytuje NAND-Flash řadič VHDL kód pro registrované uživatele.

 
Thx za odpovědi chlapi,

Podíval jsem se na kódu VHDL z Micron, jak jsem tam registrovaná, ale já nejsem ve stadiu vývoje VHDL dešifrovat někoho jiného kódu.mikronů kód není psaný přímo pro pro newbs, jako jsem já.Já jsem vlastně zjišťují, že je trochu jednodušší wirte vlastní kód.Jen doufám, že to funguje.

Thx

 
Citace:

mikronů kód není napsán přímo pro newbs jako já
 
Tam je ještě přidělit funkcí, že musím přidat na můj kód, jako je ECC atd. Ale nejprve chci být schopen číst, psát stránky a získat strukturovaný systém řešení bude pak, pokud vím, jeho pracovní špatně stavět zbytek odtud.I by měla být dokončena později dnes nebo zítra se základní strukturou číst id, přečtěte si stránku, psát stránky mazat, a status číst a přidávat komentáře k dostatečné můj kód pak budu post to.

Thx

 
Ahoj,
Paralelní rozhraní je nejjednodušší rozhraní, myslím.
Myslím, že máte čip vybrat, R / W, reset, data porty a adresy porty atd. ..
Pokud jste zkušený málo, můžete porozumět základům rozhraní IC ...

V systému vzorů, nejdůležitější je rozdělit celý architektury do několika částí a každá část má povinnost.
Myslete na celý systém a zkuste ho rozdělí na části.Jak jsem vysvětlil dříve, musíte sběrnice část, rozhraní pro připojení fotoaparátu řadič část a hlavní regulátor součástí.
Za prvé, zkuste provést sběrnice pro NAND flash ..
Pokud zadáte název NAND flash, které můžete použít, mohu vám pomoci při realizaci jeho rozhraní ...

Sbohem ...

 
Ahoj já používám Micron MT29F2G16AAD flash zařízení.První VHDL knihu jsem četl v 9 listopadu řekl, že jsem spíš musí snažit psát kód pro snadné portabilty a také RTL, aby se zabránilo snaží vyřešit un synthisizeable kód.

Jeho množství kódu, ale velké části jsou repitative kód,

Tady je můj kód
Kód:

- Nand_flash.vhd

- Jacques Kleynhans 17/01/10Knihovna IEEE;

použití IEEE.std_logic_1164.all;

použití IEEE.NUMERIC_STD.all;Účetní jednotka je NAND_FLASH - entita prohlášení

port (

ČLK: v std_logic - Vstupní hodiny tohoto systému je 40 MHz

mem_clk: InOut std_logic - Hodiny generované pll1 být 66.667MHz

rst_low: v std_logic - Reset systému je obvykle nízká

nand_cad: InOut std_logic_vector (15 downto 0); - CAD: příkaz, adresu a data před ff

nand_rdy: v std_logic - signál z paměti přístroje, pouze dostupný při vysoké

nand_opr: v std_logic_vector (2 downto 0); - Vyberte mezi RD / WR / vymazat / rd_id / rd_st

nand_ce: z std_logic, -

nand_cle: mimo std_logic;

nand_tri_en: mimo std_logic;

nand_ale: mimo std_logic;

nand_we: mimo std_logic;

nand_re: mimo std_logic;

ready: z std_logic- Nand_wp: z std_logic

- Nand_lock: z std_logic);konec subjektu NAND_FLASH;architektura ARCH dne NAND_FLASH je------------------- Pll1 konkretizaci -----------------------

složka pll1port (POWERDOWN: v std_logic;

CLKA: v std_logic;

LOCK, GLA: mimo std_logic);

konce složky;

-------------------------------------------------- -------------Typ STATE_TYPE je(Idle, rst_1, rst_2, rst_3, - reset

rid_1, rid_2, rid_3, rid_4, rid_5, rid_6, rid_7, rid_8, rid_9 - přečtěte si id

prog_1, prog_2, prog_3, prog_4, prog_5, prog_6, prog_7, prog_8, prog_9, prog_10, prog_11, prog_12, prog_13, prog_14, prog_15, prog_16, prog_17, prog_18, prog_19, prog_20, prog_21, prog_22, prog_23, prog_24,

read_1, read_2, read_3, read_4, read_5, read_6, read_7, read_8, read_9, read_10, read_11, read_12, read_13, read_14, read_15, read_16, read_17, read_18, read_19, read_20, read_21,

stat_1, stat_2, stat_3, stat_4, stat_5, stat_6) - Státní seznam program stránkusignál state_reg, state_next: state_type;

signál nand_cad_reg, nand_cad_next: std_logic_vector (15 downto 0);signál nand_ce_buf, nand_cle_buf, nand_tri_buf, nand_ale_buf, nand_we_buf, nand_re_buf: std_logic;

signál nand_ce_reg, nand_cle_reg, nand_tri_reg, nand_ale_reg, nand_we_reg, nand_re_reg: std_logic;signál počítadlo: std_logic_vector (10 downto 0);
začít------------ Port mapování proměnných I / O -----------------pll1_1: pll1 port map (POWERDOWN => '1 ', CLKA => CLK, GLA => mem_clk);- Nastavení registrů a státy, aby počáteční podmínkyproces (mem_clk, rst_low)začítif (rst_low = '0 '), pakstate_reg <= nečinný;

nand_cad_reg <= (ostatní => '0 ');nand_ce_reg <= '0 '; - vždy nízká

nand_cle_reg <= '0 ';

nand_tri_reg <= '0 ';

nand_ale_reg <= '1 ';

nand_we_reg <= '1 ';

- Nand_re_reg <= '0 ';elsif (rising_edge (mem_clk)) pakstate_reg <= state_next;

nand_cad_reg <= nand_cad_next;nand_ce_reg <= nand_ce_buf - vždy s nízkou při práci s 2gig flash jediného zemřít

nand_cle_reg <= nand_cle_buf;

nand_tri_reg <= nand_tri_buf;

nand_ale_reg <= nand_ale_buf;

nand_we_reg <= nand_we_buf;

nand_re_reg <= nand_re_buf;end if;ukončení procesu;

- Další státní a funkční datové cesty směrování

proces (state_reg, nand_opr, nand_rdy, nand_cad, nand_cad_reg) - citlivost seznamzačítnand_cad_next <= nand_cad_reg;počítadlo <= čítač;ready <= '0 ';případ state_reg jepři nečinnosti =>počítadlo <= (ostatní => '0 ');pokud nand_rdy = '0 'pakstate_next <= nečinný;jinýpokud nand_opr = "000", pak - Reset státustate_next <= rst_1;elsif nand_opr = "001", pak - čtěte ID stavstate_next <= rid_1;elsif nand_opr = "010", pak - čtěte stránku stavustate_next <= read_1;elsif nand_opr = "011", pak - Napište Page státustate_next <= prog_1;elsif nand_opr = "100", pak - Smazat Blok státustate_next <= nečinný;elsif nand_opr = "101", pak - Přečtěte si status státustate_next <= stat_1;elsif nand_opr = "110", pak - Vyhrazené státu 1state_next <= nečinný;elsif nand_opr = "111" pak - Vyhrazené státu 2state_next <= nečinný;ostatní - jiné kombinace znakůstate_next <= nečinný;end if;end if;ready <= '1 ';když rst_1 =>if (nand_rdy = '0 '), pak - Tento kus kódu bude kontrolovat, zda v paměti zařízení je připraveno, aby byl přístupný

state_next <= rst_1;

jiný

nand_cad_next <= "0000000011111111"; - 00FFh hex příkaz pro reset

state_next <= rst_2;

end if;když rst_2 =>state_next <= rst_3;když rst_3 =>state_next <= nečinný;když rid_1 =>nand_cad_next <= "0000000010010000"; - 0090h hex příkaz pro čtení idstate_next <= rid_2;když rid_2 =>state_next <= rid_3;když rid_3 =>nand_cad_next <= "0000000000000000"; - 0000h adresu příkaz Readi idstate_next <= rid_4;když rid_4 =>state_next <= rid_5;když rid_5 =>počítadlo <= std_logic_vector (nepodepsané (počítadlo) 1);state_next <= rid_6;když rid_6 =>pokud nepodepsané (počítadlo) = 3 pakstate_next <= rid_7;

počítadlo <= (ostatní => '0 ');

jinak state_next <= rid_5;

end if;když rid_7 =>počítadlo <= std_logic_vector (nepodepsané (počítadlo) 1);state_next <= rid_8;když rid_8 =>pokud nepodepsané (počítadlo) = 5 pakstate_next <= rid_9;

počítadlo <= (ostatní => '0 ');

jiný

nand_cad_next <= nand_cad - data jsou čtena z nand_cad port

state_next <= rid_7;

end if;když rid_9 =>state_next <= nečinný;když prog_1 =>nand_cad_next <= "0000000010000000"; - 80h příkaz použít pro programování stránkustate_next <= prog_2;když prog_2 =>state_next <= prog_3;když prog_3 =>nand_cad_next <= "0000000011111111"; - collomn adresa 1state_next <= prog_4;když prog_4 =>state_next <= prog_5;když prog_5 =>nand_cad_next <= "0000000000000100"; - sloupec adresu 2state_next <= prog_6;když prog_6 =>state_next <= prog_7;když prog_7 =>nand_cad_next <= "0000000011111011"; - řádek adresa 1state_next <= prog_8;když prog_8 =>state_next <= prog_9;když prog_9 =>nand_cad_next <= "0000000010101010"; - řádek adresu 2state_next <= prog_10;když prog_10 =>state_next <= prog_11;když prog_11 =>nand_cad_next <= "0000000011000011"; - řádek adresu 3state_next <= prog_12;když prog_12 =>state_next <= prog_13;když prog_13 =>počítadlo <= std_logic_vector (nepodepsané (počítadlo) 1);state_next <= prog_14;když prog_14 =>pokud nepodepsané (pult) = 2 pakstate_next <= prog_15;

počítadlo <= (ostatní => '0 ');

jinak state_next <= prog_13;

end if;když prog_15 =>počítadlo <= std_logic_vector (nepodepsané (počítadlo) 1);state_next <= prog_16 - státy jsou opakované vytváření hodiny pro náskdyž prog_16 =>pokud nepodepsané (counter) = 1057 paknand_cad_next <= "0000000000010000"; - 0010h konci příkaz pro program stránkustate_next <= prog_17;

počítadlo <= (ostatní => '0 ');jinýnand_cad_next <= nand_cad;

state_next <= prog_15;

end if;když prog_17 =>state_next <= prog_18;když prog_18 =>state_next <= prog_19;při prog_19 =>if (nand_rdy = '0 '), pakstate_next <= prog_19;

jiný

nand_cad_next <= "0000000001110000"; - 0070h příkaz status číst

state_next <= prog_20;

end if;když prog_20 =>state_next <= prog_21;když prog_21 =>počítadlo <= std_logic_vector (nepodepsané (počítadlo) 1);state_next <= prog_22;když prog_22 =>pokud nepodepsané (pult) = 2 pakstate_next <= prog_23;

počítadlo <= (ostatní => '0 ');

jinak state_next <= prog_21;

end if;když prog_23 =>nand_cad_next <= nand_cad - data jsou čtena z nand_cad portstate_next <= prog_24;když prog_24 =>state_next <= nečinný;když read_1 =>nand_cad_next <= "0000000000000000"; - 00h příkaz pro čtení stránkystate_next <= read_2;když read_2 =>state_next <= read_3;když read_3 =>nand_cad_next <= "0000000011111111"; - collomn adresa 1state_next <= read_4;když read_4 =>state_next <= read_5;když read_5 =>nand_cad_next <= "0000000000000100"; - sloupec adresu 2state_next <= read_6;když read_6 =>state_next <= read_7;když read_7 =>nand_cad_next <= "0000000011111011"; - řádek adresa 1state_next <= read_8;když read_8 =>state_next <= read_9;když read_9 =>nand_cad_next <= "0000000010101010"; - řádek adresu 2state_next <= read_10;když read_10 =>state_next <= read_11;když read_11 =>nand_cad_next <= "0000000011000011"; - řádek adresu 3state_next <= read_12;když read_12 =>state_next <= read_13;když read_13 =>nand_cad_next <= "0000000000110000"; - 0010h konci příkaz pro program stránkustate_next <= read_14;když read_14 =>state_next <= read_15;když read_15 =>state_next <= read_16;když read_16 =>if (nand_rdy = '0 '), pak

state_next <= read_16;

jinak state_next <= read_17;

end if;když read_17 => - zpoždění státu před údaji bude číststate_next <= read_18;když read_18 =>počítadlo <= std_logic_vector (nepodepsané (počítadlo) 1);state_next <= read_19;když read_19 =>pokud nepodepsané (counter) = 1057 pakstate_next <= read_20;

počítadlo <= (ostatní => '0 ');

jinak state_next <= read_18;

end if;když read_20 =>state_next <= nečinný;když read_21 =>state_next <= nečinný;když stat_1 =>nand_cad_next <= "0000000001110000"; - 0070h příkaz status číststate_next <= stat_2;když stat_2 =>state_next <= stat_3;když stat_3 =>počítadlo <= std_logic_vector (nepodepsané (počítadlo) 1);state_next <= stat_4;když stat_4 =>pokud nepodepsané (pult) = 2 pakstate_next <= stat_5,

počítadlo <= (ostatní => '0 ');

jinak state_next <= stat_3;

end if;když stat_5 =>nand_cad_next <= nand_cad - data jsou čtena z nand_cad portstate_next <= stat_6;když stat_6 =>state_next <= nečinný;konec případu;ukončení procesu;- Diskutovat o výstup logikyproces (state_next)začít- Počáteční stav nastaví všechny kontrolní linky do výchozího stavunand_tri_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '1 ';nand_cle_buf <= '0 ';nand_re_buf <= '1 ';případ state_next jepři nečinnosti =>když rst_1 =>když rst_2 =>nand_tri_buf <= '1 ';nand_cle_buf <= '1 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';když rst_3 =>nand_tri_buf <= '1 ';nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';když rid_1 =>když rid_2 =>nand_cle_buf <= '1 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když rid_3 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když rid_4 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když rid_5 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když rid_6 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když rid_7 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '0 ';když rid_8 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '0 ';nand_tri_buf <= '0 ';když rid_9 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '0 ';
když prog_1 =>když prog_2 =>nand_cle_buf <= '1 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_3 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_4 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_5 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_6 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_7 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_8 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_9 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_10 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_11 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_12 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_13 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_14 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_15 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_16 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_17 =>nand_cle_buf <= '1 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_18 =>nand_cle_buf <= '1 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_19 =>nand_cle_buf <= '1 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_20 =>nand_cle_buf <= '1 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_21 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_22 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když prog_23 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '0 ';nand_tri_buf <= '1 ';když prog_24 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když stat_1 =>nand_cle_buf <= '1 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když stat_2 =>nand_cle_buf <= '1 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když stat_3 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když stat_4 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když stat_5 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '0 ';nand_tri_buf <= '1 ';když stat_6 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';

když read_1 =>když read_2 =>nand_cle_buf <= '1 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_3 =>nand_cle_buf <= '1 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_4 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_5 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_6 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_7 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_8 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_9 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_10 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_11 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_12 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_13 =>nand_cle_buf <= '1 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '1 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_14 =>nand_cle_buf <= '1 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_15 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_16 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_17 =>nand_cle_buf <= '1 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_18 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_19 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';když read_20 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '0 ';nand_ale_buf <= '0 ';nand_re_buf <= '0 ';nand_tri_buf <= '1 ';když read_21 =>nand_cle_buf <= '0 ';nand_ce_buf <= '0 ';nand_we_buf <= '1 ';nand_ale_buf <= '0 ';nand_re_buf <= '1 ';nand_tri_buf <= '1 ';
konec případu;

ukončení procesu;- Výstupní signály a port mapovánínand_cad <= nand_cad_reg - třeba ad ohraničujícím faktorem např. když je nízká tri do jiného Z

nand_tri_en <= nand_tri_reg;

nand_ce <= nand_ce_reg;

nand_cle <= nand_cle_reg;

nand_ale <= nand_ale_reg;

nand_we <= nand_we_reg;

nand_re <= nand_re_reg;konec oblouk;
 
Ověřil jsem si na chvíli, ale ne hluboko, zdá se OK.
Máte dotaz, nevadí otestování kódu s testbench nebo s NAND flash?
Jsem zmaten ...

Máte-li mysl psát testbench, já Vám FSM, jak jste ve vašem RTL kódu.
Předpokládejme, že RTL kód je odpovědný generovat výstupy podle vstupy.
Testbench je zodpovědná za vytváření vstupů a pozorovat vaše výstupy.
Podle správnosti výstupní hodnoty, můžete dát tvrzení ze simulátoru a zkontrolujte, zda je ..
K dispozici jsou dva bloky, jeden je váš blok, který generuje výstupy, další je testbench blok, který generuje vstupy a výstupy poznamenává.Napište svůj testbench ve FSM stylu ..Bude více intuitivní ...

Micron NAND flash rozhraní se zdá ok ..Pokud se vám podařilo udělat časování správně, bude trochu problém, nebo ne, myslím.FSM styl je ok ..

Ilgaz

 
Mám testován pouze můj kód se zkušebním zařízení, a nikoli se skutečnými hardware.Doufejme, že mohu otestovat na mém dev kit v průběhu týdne.

Thx pro váš vstup!

 
Ahoj kluci, já se snažím synth můj kód, ale mám následující chyby:

Citace:

W CL207 všechny dosažitelné přiřazení nand_ce_reg přiřadit 0, zaregistrujte odstraněn optimalizace nand_flash.vhd (77) NAND_FLASH.srr (3
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Chladný" border="0" /> 08:51:36 út. 19 leden compilerReport

W CL190 Optimalizace registru bit nand_cad (
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Chladný" border="0" /> na konstantní 0 nand_flash.vhd (77) NAND_FLASH.srr (40) 8:51:36 út. 19 leden compilerReport

W CL171 Prořezávání Registrovat bit <3> z nand_cad (7 downto 0) nand_flash.vhd (77) NAND_FLASH.srr 08:51:36 út. 19 leden compilerReport

W CL111 všechny dosažitelné přiřazení nand_ce_reg přiřadit '0 ', registr odstraněn optimalizace nand_flash.vhd (77) NAND_FLASH.srr (37) 8:51:36 út. 19 leden compilerReport

W CD326 Port zámku subjektu work.pll1 nesouvisí nand_flash.vhd (6
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Chladný" border="0" /> NAND_FLASH.srr (24) 8:51:36 út. 19 leden compilerReport

W BN269 Knihovna ARC prořezávání: více BiDi v buňce BIBUF_LVDS.
Prořezávání opuštěný.
- NAND_FLASH.srr 08:51:36 út. 19 leden ProASIC3E Mapper

W BN246 Nepodařilo se najít špičkové úrovni modul 'work.NAND_FLASH', jak je uvedeno v souboru projektu - NAND_FLASH.srr (133) 8:51:36 út. 19 leden ProASIC3E Mapper

W CL117 Západka generovány z procesu signálu čítač (10 downto 0), pravděpodobně způsobeno chybějící přiřazení v případě, pokud nebo stmt nand_flash.vhd (127) NAND_FLASH.srr (36) 9:51:30 út. 19 leden compilerReport

MUX Zpětná vazba vytvořená pro signál nand_re_reg.
Zapomněli jste nastavit / reset zadání pro tento signál?
Zadání reset hodnoty zlepší čas a prostor nand_flash.vhd (77) NAND_FLASH.srr (39) 8:51:36 út. 19 leden compilerReport

N CL201 Snaha získat státní stroj na registr state_reg nand_flash.vhd (77) NAND_FLASH.srr (56) 8:51:36 út. 19 leden compilerReport

N CD232 Pomocí šedá kód kódování typu nand_flash.vhd state_type (45) NAND_FLASH.srr (23) 8:51:36 út. 19 leden compilerReport

N CD720 Nastavení času usnesení std.vhd ns (123) NAND_FLASH.srr (16) 8:51:36 út. 19 leden compilerReport

N CD630 syntéz proasic3e.vcc.syn_black_box - NAND_FLASH.srr 08:51:36 út. 19 leden compilerReport

N MT322 Hodiny omezení vztahuje pouze na FF-k-FF cesty spojené s hodinami ..
- NAND_FLASH.srr (291) 8:51:36 út. 19 leden timingReport

N MT320 Toto načasování Zpráva odhaduje, místo a způsob data.
Podívejte se na místo a cestou načasování zprávy pro konečné načasování ..
- NAND_FLASH.srr (289) 8:51:36 út. 19 leden timingReport

N MF258 Gated hodiny konverze zdravotně postižené - NAND_FLASH.srr (135) 8:51:36 út. 19 leden ProASIC3E Mapper

N MF249 Běh na 32-bitovém režimu.
- NAND_FLASH.srr (134) 8:51:36 út. 19 leden ProASIC3E Mapper

N BN225 Psaní výchozí vlastnictví anotace souboru C: \ Actelprj \ nand_flash \ syntézu \ NAND_FLASH.map.
- NAND_FLASH.srr (263) 8:51:36 út. 19 leden ProASIC3E Mapper

N MF238 Nalezeno 11 bit incrementor, 'un4_counter [10]' nand_flash.vhd (221) NAND_FLASH.srr (216) 9:51:30 út. 19 leden ProASIC3E Mapper

N MO106 Nalezeno ROM, 'ready_1', 64 slova bity 1 nand_flash.vhd NAND_FLASH.srr 09:51:30 út. 19 leden ProASIC3E Mapper

 

Welcome to EDABoard.com

Sponsor

Back
Top