Модераторы: Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> VHDL, есть кто живой? 
:(
    Опции темы
darkniisiis
Дата 13.10.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.10.2006

Репутация: нет
Всего: 1



Вот такой вопрос-недавно начал программировать на VHDL под XILINX, возникают некоторые вопросы.На этом форуме вообще есть кто-нибудь,кто в этом шарит?Я пытался поднимать вопросы в других темах-тишина и покой, посоветовали спросить  здесь. Вот пришёл к вам покричать "АУУУУУУУУУУ!ЕСТЬ КТО ЖИВОЙ?"
Отзовитесь!!!
PM MAIL   Вверх
Romikgy
Дата 13.10.2006, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



Цитата(darkniisiis @  13.10.2006,  14:02 Найти цитируемый пост)
Вот пришёл к вам покричать "АУУУУУУУУУУ!ЕСТЬ КТО ЖИВОЙ?"
Отзовитесь!!! 

ты делой это без криков!

Где вопрос то?

PS еще раз правила можешь на досуге почитать!


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
darkniisiis
Дата 16.10.2006, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.10.2006

Репутация: нет
Всего: 1



Я просто задал вопрос, есть ли на этом форуме компитентные люди, разбирающиеся в VHDL, а коли таких нет смысл вопросы то задавать?

Ну на всякий случай, вдруг кто забредёт вопрос таков
Помогите описать на VHDL под xilinx(среда разработки ISE 8.2i sp1) таймер задержки, третий день голову ломаю всё никак промоделировать не получается.
Начало вот:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity del_clk is
Port ( set : in STD_LOGIC;
out_clk : out STD_LOGIC;
clk : in STD_LOGIC;
prog : in STD_LOGIC_VECTOR (15 downto 0));
end del_clk;
где set-вход для импульса,который должен появиться на выходе out_clk через задержку в несколько тактовых импульсов,подаваемых на вход clk, количество этих импульсов задаётся через вход prog.
СПАСИТЕ МОЮ БЕДНУЮ ГОЛОВУ!!!! 



PM MAIL   Вверх
Romikgy
Дата 16.10.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



Цитата(darkniisiis @  16.10.2006,  09:07 Найти цитируемый пост)
Я просто задал вопрос, есть ли на этом форуме компитентные люди, разбирающиеся в VHDL, а коли таких нет смысл вопросы то задавать?

так зачем создавать тему если в ней нет вопроса?
терь вопрос задан и кто знает тот те ответит


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Romikgy
Дата 16.10.2006, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146





--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
darkniisiis
Дата 17.10.2006, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.10.2006

Репутация: нет
Всего: 1



Помогите найти ошибку.Вот рабочий таймер, только сигнал на выходе при prog="0000000000000001" возникает не через один такт, а через два. 
---------------------------------------Листинг----------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity del_clk is
    Port ( set : in  STD_LOGIC;
           out_clk : out  STD_LOGIC;
              clk : in STD_LOGIC;
           prog : in STD_LOGIC_VECTOR (15 downto 0));
end del_clk;

architecture Behavioral of del_clk is
signal st : STD_LOGIC_VECTOR (15 downto 0):="0000000000000000";
signal outsig : STD_LOGIC:='0';
signal setup : STD_LOGIC:='0';
begin
process(set,outsig)
variable crt : integer:=0;
begin
if set='1' then
crt := crt + 1;
end if;
if outsig = '1' then
crt := crt - 1;
end if;
if crt=0 then
setup<='0';
else
setup<='1';
end if;
end process;
process(clk)
begin
if setup='1' then
if clk='1' then
if (prog="0000000000000001" and st/="0000000000000001") then
st<=st+1;
elsif (prog="0000000000000001" and st=prog) then
st<= conv_std_logic_vector(0,16);
elsif (st=prog-1 and prog/="0000000000000001") then
st<= conv_std_logic_vector(0,16);
else st<=st+1;
end if;
end if;
end if;
if (prog="0000000000000001" and st=prog and clk='1') then 
out_clk <= '1';
outsig <= '1';
elsif (st=prog-1 and clk='1' and prog/="0000000000000001") then 
out_clk <= '1';
outsig <= '1';
else 
out_clk <= '0';
outsig <= '0';
end if;

end process;
end Behavioral;



Это сообщение отредактировал(а) darkniisiis - 17.10.2006, 10:53
PM MAIL   Вверх
Romikgy
Дата 17.10.2006, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 1
Всего: 146



Это не мой ответ , а спеца который хавает в этом
Код

у тебя асинхронный процесс перелазит в синхронный
так как асинхронный тайминги зависит от расположение в микросхемы от 
типа микросхемы он может быть быстрее клока но и медленне клока
надо знать микруху и выстроить временную диаграмму процесса



Это сообщение отредактировал(а) Romikgy - 17.10.2006, 11:09


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
darkniisiis
Дата 19.10.2006, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.10.2006

Репутация: нет
Всего: 1



Да вообще таймер какой-то корявый получился, при трансляции куча варнингов.Помогите кто-нибудь его до ума довести, или предложите свой вариант, а то у меня фантазия закончилась, а время уже поджимает. Буду примногоблагодарен,HELP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Разрабатывается под ПЛИС Xilinx Spartan2 .

Это сообщение отредактировал(а) darkniisiis - 19.10.2006, 10:36
PM MAIL   Вверх
srm
Дата 15.4.2010, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.4.2010

Репутация: нет
Всего: нет



Может у кого есть реализованный на VHDL алгоритм Штрассена. Очень нужен. 
PM MAIL   Вверх
Evgenij118
Дата 27.1.2011, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 27.1.2011

Репутация: нет
Всего: нет



Кто знает, напишите пожалуйста, как занести в 15-ую ячейку памити ОЗУ значение 21. И 

вывести занчение 27-ой ячейки. И это всё через Test Bench. Заранее спасибо!
PM MAIL   Вверх
abraziv
Дата 10.12.2012, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 29.9.2011

Репутация: нет
Всего: нет



Всем привет. Почему  тип std_logic в объявление интерфейса можно использовать  только один раз?? Т.е. если объявить следом ещё один интерфейс (entity) то анализатор-VHDL ругается: 

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
 
entity DFF is
    Port  ( D     :   in  std_logic;
           CLK    :   in  std_logic;
           RESET  :   in  std_logic;
           Q      :   out  std_logic
              );
end DFF;

entity D is
    Port  ( DATA    :   in  std_logic);
end D;

Если же повторно прописать библиотеку, ошибка уходит, с чем это связано???

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
 
entity DFF is
    Port  ( D     :   in  std_logic;
           CLK    :   in  std_logic;
           RESET  :   in  std_logic;
           Q      :   out  std_logic
              );
end DFF;

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

entity D is
    Port  ( DATA    :   in  std_logic);
end D;
PM MAIL   Вверх
abraziv
Дата 7.9.2013, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 29.9.2011

Репутация: нет
Всего: нет



Всем привет. Почему то во время синтеза, XST вылитает с ошибкой , если раскомментировать строчку s_clk_out <= not s_clk_out  :
Подскажите пожалуйста как исправить.

Код


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity clk_adc_x_2 is
port(
clk_adc : in std_logic;
clk_out : out std_logic;
sys_clk : in std_logic
);
end clk_adc_x_2;

architecture Behavioral of clk_adc_x_2 is

signal r_edge : std_logic;
signal f_edge1 : std_logic;
signal resolved : std_logic;
signal s_clk_out : std_logic;
signal start :  std_logic;

begin

p1 : process( clk_adc )
variable stop : integer := 0;
begin
if stop < 1 then
    if clk_adc = '1' then
    r_edge <= '1';
    else
    f_edge1 <= '1';
    r_edge <= '0';
    stop :=  stop + 1 ;
    end if;
end if;
start <= not start;
end process;

p2 : process
variable i    : integer := 0;
variable N    : integer := 0;
variable j1,j2    : integer := 0;
variable f_edge2 : integer := 0;
begin
wait until rising_edge( sys_clk ) ;
if f_edge2 < 1 then
    if r_edge = '1' then
    i := i + 1;
        elsif f_edge1 = '1' then
        N := i / 2;
        f_edge2 := f_edge2 + 1;
    end if;
else
        if start = '1' then
            j2 := N;
            if j1 = N then
            s_clk_out <= not s_clk_out;
            j1 := 0;
            else
            j1 := j1 + 1;
            end if;
        else
            j1 := N;
            if j2 = N then
            --s_clk_out <= not s_clk_out;
            j2 := 0;
            else
            j2 := j2 + 1;
            end if;
        end if;        
end if;
end process;

clk_out <= s_clk_out;

end Behavioral;


PM MAIL   Вверх
lait33
Дата 20.10.2015, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 20.10.2015

Репутация: нет
Всего: нет



Цитата(abraziv @ 7.9.2013,  16:54)
Всем привет. Почему то во время синтеза, XST вылитает с ошибкой , если раскомментировать строчку s_clk_out <= not s_clk_out  :
Подскажите пожалуйста как исправить.

Код


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity clk_adc_x_2 is
port(
clk_adc : in std_logic;
clk_out : out std_logic;
sys_clk : in std_logic
);
end clk_adc_x_2;

architecture Behavioral of clk_adc_x_2 is

signal r_edge : std_logic;
signal f_edge1 : std_logic;
signal resolved : std_logic;
signal s_clk_out : std_logic;
signal start :  std_logic;

begin

p1 : process( clk_adc )
variable stop : integer := 0;
begin
if stop < 1 then
    if clk_adc = '1' then
    r_edge <= '1';
    else
    f_edge1 <= '1';
    r_edge <= '0';
    stop :=  stop + 1 ;
    end if;
end if;
start <= not start;
end process;

p2 : process
variable i    : integer := 0;
variable N    : integer := 0;
variable j1,j2    : integer := 0;
variable f_edge2 : integer := 0;
begin
wait until rising_edge( sys_clk ) ;
if f_edge2 < 1 then
    if r_edge = '1' then
    i := i + 1;
        elsif f_edge1 = '1' then
        N := i / 2;
        f_edge2 := f_edge2 + 1;
    end if;
else
        if start = '1' then
            j2 := N;
            if j1 = N then
            s_clk_out <= not s_clk_out;
            j1 := 0;
            else
            j1 := j1 + 1;
            end if;
        else
            j1 := N;
            if j2 = N then
            --s_clk_out <= not s_clk_out;
            j2 := 0;
            else
            j2 := j2 + 1;
            end if;
        end if;        
end if;
end process;

clk_out <= s_clk_out;

end Behavioral;



все. теперь компилится=) 

процесс всегда должен быть тактируемым это раз и быть в списке чувствительности.  

всякие wait в железе не работают.. т.к это не синтезируемые типы данных. они толкьо для симуляций. 
хоть оп умолчанию изначально сигналу присваивается 0, но лучше это делать самому.. дабы избежать всяких глюков

ну и некоторые переменные вынес в сигналы, хотя это никак не повлияло бы на ту ошибку. 

Код

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;


entity clk_adc_x_2 is
port(
clk_adc : in std_logic;
clk_out : out std_logic;
sys_clk : in std_logic
);
end clk_adc_x_2;
architecture Behavioral of clk_adc_x_2 is
signal r_edge        : std_logic;
signal f_edge1        : std_logic;
signal resolved    : std_logic;
signal s_clk_out    : std_logic := '0';
signal start        : std_logic := '0';

signal stop        : std_logic_vector(2 downto 0) := (others => '0');    
signal f_edge2        : std_logic_vector(2 downto 0) := (others => '0');    

begin

p1 : process(clk_adc)
begin
if rising_edge(clk_adc) then 
    if stop < 1 then
        r_edge <= '1';
        else
        f_edge1 <= '1';
        r_edge <= '0';
        stop <=  stop + '1';
    end if;
end if;
end process p1;

start <= not start;

p2 : process( sys_clk )
variable i    : integer := 0;
variable N    : integer := 0;
variable j1,j2    : integer := 0;
begin
        if rising_edge( sys_clk ) then
            if f_edge2 < 1 then
                if r_edge = '1' then
                    i := i + 1;
                elsif f_edge1 = '1' then
                    N := i / 2;
                    f_edge2 <=  f_edge2 + '1';
                end if;

            else
              if start = '1' then
                    j2 := N;
                    if j1 = N then
                        s_clk_out <= not s_clk_out;
                        j1 := 0;
                        else
                            j1 := j1 + 1;
                    end if;
              else
              
                if start = '0' then
                    j1 := N;
                    if j2 = N then
                        s_clk_out <= not s_clk_out;
                        j2 := 0;
                        else
                        j2 := j2 + 1;
                    end if;
                end if;    
              end if;        
            end if;
        end if;
end process p2;
clk_out <= s_clk_out;
end Behavioral;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разное (электроника) | Следующая тема »


 




[ Время генерации скрипта: 0.1412 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.