CPLD stale v tom plavu :-)
Ondrej
leguanolog@seznam.cz
Středa Červenec 8 18:15:38 CEST 2009
Nicméně 4096 je mocnina dvou, takže se dá použít prostý čítač UP a jen
vyvést jeho horní bit (zde pro dělení 2^4, ale dá se snadno upravit).
entity delicka is
Port ( clk : in STD_LOGIC;
reset : in std_logic;
clk_4 : out STD_LOGIC);
end delicka;
architecture Behavioral of delicka is
signal count : std_logic_vector (4 downto 0);
begin
process (clk, reset)
begin
if reset='1' then
count <= (others => '0');
elsif rising_edge (clk) then
count <= count +1;
end if;
end process;
clk_4 <= count (4);
end Behavioral;
Daniel Valuch napsal(a):
> ak mozem doporucit, pre navrhy ktore sa budu syntetizovat nepouzivajte
> premenne ale signaly. Premenne su trochu 'tricky' na pouzivanie. Mozem
> dat vlastny priklad kedy som len nahodou zistil ze to co som si myslel
> ze je citac sa mi prelozilo ako state machine s 4096 stavmi. Kedze bolo
> FPGA velke vsimol som si to len nahodou ked som hladal inu chybu. Po
> zmene z premennej na signal bol preklad v poriadku a uvolnilo sa znacne
> mnozstvo zdrojov :-)
>
>
> priklad citaca z
> http://www.xilinx.com/itp/3_1i/data/fise/xst/chap02/xst02005.htm
>
> Following is VHDL code for a 4-bit unsigned Up counter with asynchronous
> clear.
>
> library ieee;
> use ieee.std_logic_1164.all;
> use ieee.std_logic_unsigned.all;
>
>
> entity counter is
> port(C, CLR : in std_logic;
> Q : out std_logic_vector(3 downto 0));
> end counter;
> architecture archi of counter is
> signal tmp: std_logic_vector(3 downto 0);
> begin
> process (C, CLR)
> begin
> if (CLR='1') then
> tmp = "0000";
> elsif (C'event and C='1') then
> tmp = tmp + 1;
> end if;
> end process;
> Q = tmp;
> end archi;
>
>
>
>
>
>
>
> j.Krajinka@seznam.cz wrote:
>
>> Mea culpa, asi jsem momentalne zaostaly, ale s timhle se peru uz hodinu.
>>
>> Pokud se nepletu tak port muze byt definovan jako in, out, inout a buffer?
>> Pokud ano tak nechapu proc pri vytvareni noveho modulu New Source Wizard neumoznuje volbu buffer?
>>
>> Zkousel jsem delicku kmitoctu 1:4096
>>
>> Port ( Clk : in STD_LOGIC;
>> CD : buffer STD_LOGIC);
>>
>> process(Clk,CD)
>> variable cnt : integer range 0 to 4096;
>> begin
>> if(Clk'event and Clk='1') then
>> if(cnt=4096)then
>> cnt:=0;
>> CD<= CD nand '1';
>> else
>> cnt := cnt+1;
>> end if;
>> end if;
>> end process;
>>
>> toto se bezproblemu prelozi a projde kontrolou syntaxe.
>> problem je ze, kdyz vytvorim VHDL Test Bench , tak generator oznaci CD jako vystup CD : OUT std_logic
>> Pokus o simulaci konci chybou
>> ERROR:HDLCompiler:439 - Formal port cd of mode buffer cannot be associated with actual port cd of mode out, ktera je tak tajna, ze ji nepopisuji ani v napovede na webu Xilinx.
>> Kdyz to rucne opravim z Out na buffer tak to funguje, ale tak si rikam, zda nedelam neco blbe, kdyz je to tak komplikovane :-)
>>
>>
>> Dekuji
>> Jirka
>> _______________________________________________
>> HW-list mailing list - sponsored by www.HW.cz
>> Hw-list@list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>>
>>
>>
>
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
>
--
Jabber: Iguaner@jabber.cz
ICQ: 122712466
---------------------------------------------------
| |
| IKORAS - My home-made MP3 player |
| http://ikoras.iglu.cz |
| |
---------------------------------------------------
Další informace o konferenci Hw-list