Optymalizacja projektu na FPGA ALTERA z użyciem isp: jak to zrobić efektywnie?
Re: ALTERA i isp
From: "Juliusz" <juliusz_at_nospam_multi-ip.com.pl>
Subject: Re: ALTERA i isp
Date: Sun, 15 Aug 1999 18:41:34 GMT
Piotr Laskowski napisał(a) w wiadomości: <934319967_at_nospam_f117.n480.z2.ftn>...
Czesc Juliusz !
Dobra masz tu wszystko. Jak czegos nie skopalem logicznie to powinno
chodzic. Jeszcze masz 45% wolnego. Moze jest czas zeby caly projekt zrobic
rozsadniej ??????????????? Bo jakbym to dostal do lapy to pewnie w 1 dzien
zrobie to po swojemu, wlacznie z odczytem danych z przetwornikow do RAM
automatycznie.
Masz ten start z opoznieniem i wyjcie zegara podzielonego przez 4. Masz
piny - pozamieniaj je sobie jak chcesz, Nie ruszaj pin avoid. Obudowa TQFP
44.
Kompiluje sie bez bledow.
Juliusz
library ieee;
use ieee.std_logic_1164.all;
library work;
use work.std_arith.all;
entity piotrek is
port (reset_n :in std_logic; -- async reset
clk :in std_logic;
clk_4 :out std_logic; -- zegar podzielony/4
S1 :buffer std_logic;
S2 :out std_logic;
adstart :out std_logic;
S3 : out std_logic
);
attribute pin_avoid of piotrek :entity is "1 13 21 33"; -- JTAG pins
attribute pin_numbers of piotrek :entity is
"reset_n:14 clk:7 adstart:19 S1:42 S2:18 S3:3 clk_4:24";
end piotrek;
architecture arch_piotrek of piotrek is
signal licznik :std_logic_vector (10 downto 0);
signal S1_sig :std_logic;
begin
-- Do the licznik modulo 1224
process (reset_n, clk)
begin
if reset_n='0' then
licznik <= "00000000000"; -- dummy reset
elsif clk'event and clk='1' then
if licznik = x"4C8" then
licznik <= "00000000000";
else
licznik <= licznik + 1;
end if;
end if;
end process;
clk_4 <= licznik(2); -- dzielnik CLK przez 4 wywala na pin clk_4
-- Start przetwornika z opoznieniem. stan '1' pojawia sie o 1 cykl CLK
pozniej
-- niz pojawia sie zbocze od S1 i trwa w nieskonczonosc
process (reset_n, clk, S1)
begin
if reset_n='0' then
adstart <= '0'; --dummy reset
elsif clk'event and clk='1' then
if S1='1' then
adstart <='1';
end if;
end if;
end process;
-- Do the S1
process (reset_n, clk)
begin
if reset_n='0' then
S1 <= '0';
elsif clk'event and clk='1' then
if licznik=x"0" or licznik=x"1" then
S1 <= '1';
else
S1 <= '0';
end if;
end if;
end process;
-- Do the S2
process (reset_n, clk)
begin
if reset_n='0' then
S2 <= '0';
elsif clk'event and clk='1' then
if licznik=x"198" or licznik=x"199" then
S2 <= '1';
else
S2 <= '0';
end if;
end if;
end process;
-- Do the S3
process (reset_n, clk)
begin
if reset_n='0' then
S3 <= '0';
elsif clk'event and clk='1' then
if licznik=x"330" or licznik=x"331" then
S3 <= '1';
else
S3 <= '0';
end if;
end if;
end process;
end arch_piotrek;