Jump to content

    

OLD_SHURiK

Участник
  • Content Count

    29
  • Joined

  • Last visited

Community Reputation

0 Обычный

About OLD_SHURiK

  • Rank
    Участник
  • Birthday 05/30/1959

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Беларусь, Минск

Старые поля

  • skype
    old-shurik

Recent Profile Visitors

704 profile views
  1. пробелов в пути нет. Библиотека созданная только что - пустая. *.lock файлов не обнаружено. (((
  2. Всем доброго здравия. Mentor Graphics Expedition EE7.9.5. Library Manager Создана библиотека Design Capture/Expedition. Создан некий символ. При копировании этого символа новый символ создаётся (виден в Symbol), но не видно его изображение. При редактировании ругается, что такого символа нет ! И что делать ?! Где подвох ?! Заранее спасибо за помощь.
  3. Ещё раз всем привет и доброго здравия . Главное здесь было задать как формируются клоки. Схема немного изменена (сигналы как в проекте) Параметры заданы для частоты 20MHz. это кусочек *.SDC это две таблички из TimeQuesta и как бы всё ПОЛУЧИЛОСЬ! Всем спасибо за советы !!
  4. вот этот. Я понимаю что можно всё сделать ручками. Да , понимаю что проект не сложный. И используя Set_Maximum_Delay добился некоторых удовлетворяющих меня цифр. Но это должен считать и TimeQuest, это его работа. Задача описать ему клоки и задержки. Я описывал приём как rising , передачу как falling , но он упорно считает весь такт , а не половину relationship = period а не period/2. И хотелось бы заставить его это делать. На эту память могут работать несколько процессоров.
  5. раньше всё по нетлисту и делали. Но зачем то появился TimeQuest. И задание задержек это тот же TimeQuest. По тому, что это его назначение считать все задержки распространения сигнала, не только клоки. И как говорится - если TimeQuest не выдаёт ошибок, то значит Вы не всё описали. Он же основан на базе Synopsys Design Constraints (SDC) который позволяет считать констрайны не только для случаев когда clock в FPGA - это частный случай. Поэтому и задан вопрос.
  6. да это spi шина. я хочу посчитать весь путь туда и обратно с учётом задержек распространения сигналов в MAX. На эту память будут работать два процессора. Так сказать некий мост. Да можно взять и посчитать ручками. Но зачем тогда TimeQuest? Или он не умеет такое считать ? Или это должен будет считать трассировщик ?
  7. т.е. получается надо описать как бы "наоборт" - для CP input это MO, а output MI. Соответственно для memory input это PI, а output PO. Так получается ?
  8. Всем привет и доброго здравия. Подскажите как обканстрейнить такую схему (attach), чтобы учитывались в MAXII Заранее всем спасибо.
  9. Всем привет. QuartusII, MAXII, переключатель SPI интерфейса. Данные передаются по falling принимаются по rising. Описал Constraints, но TimeQuest упорно не хочет считать по пол такта, а считает на весь такт. Что не правильно я сделал? схема приблизительная
  10. первый вопрос signal pulse : std_logic := '0'; signal set_pulse : std_logic := '0'; signal reset_pulse : std_logic := '0'; signal count_pulse : std_logic := '0'; -- объявили сигналы -- а использовали только два "count_pulse" и "pulse" -- на неиспользованные сигналы QUARTUS выдает "варнинги" -- что переменная объявлена но нигде не применяется. -- в большом проекте набирается таких довольно моного :-(( -- ВОПРОС : можно ли Actve-HDL заставить сообщать об этом ? второй вопрос signal pulse : std_logic := '0'; signal a : std_logic := '0'; signal b : std_logic := '0'; signal c : std_logic := '0'; ..... .... ... a <= a_function; -- какая то функция b <= b_function; -- какая то функция -- а про "с" ЗАБЫЛИ !!!! pup : process(clock, a, b, c) begin if risin_edge(clcok) then if a = '1' then pulse <= p1_function; elsif b= '1' then pulse <= p2_function; elsif c = '1' then pulse <= p3_function; end if; end if; end process pup; -- всё компилится и не ругается !!! -- ВОПРОС : можно ли Active-HDL "заставить ругаться" на такое безобразие? -- что бы не тратить время на поиски "забывчивости".
  11. всем здравствуйте ! есть вопрос : можно ли заставить Active-HDL "ругаться" на пустые сигналы ? т. е. сигнал назначен, но нигде не применён. что бы потом QUARTUS не делал много warning-ов . заранее спасибо.
  12. Всем спасибо ! Ошибка была в том что память инициализировалась всё время при входе в процесс !
  13. Всем здравствуйте ! Подскажите что не так. Моделирую память в Actve-HDL на VHDL. На waveform после записи показывает старое (после инициализации) значение. В Memory Viem подсвечивает старое значение красным цветом. Нового записанного байта нигде не видно ?! Что делаю неправильно ? CODElibrary ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; use ieee.numeric_std.all; use std.textio.all; entity RAM_DP is generic ( width :natural := 8; -- Width of data[] and q[] ports. widthad :natural := 8 -- Width of the address port. ); port ( clk : in std_logic := '0'; wren : in std_logic := '0'; rdaddress : in std_logic_vector(widthad-1 downto 0); wraddress : in std_logic_vector(widthad-1 downto 0); data : in std_logic_vector(width-1 downto 0); --- q : out std_logic_vector(width-1 downto 0) ); end RAM_DP; architecture TELESH of RAM_DP is -- signal rdaddress_reg : std_logic_vector(widthad-1 downto 0) := (others => '0'); signal wraddress_reg : std_logic_vector(widthad-1 downto 0) := (others => '0'); signal data_reg : std_logic_vector(width-1 downto 0) := (others => '0'); signal q_tmp : std_logic_vector(width-1 downto 0); signal wren_reg : std_logic := '1'; --type memory is array (((2**widthad) - 1) downto 0) of std_logic_vector(width-1 downto 0); --signal RAM : memory; begin input_register: process(clk) begin if (rising_edge(clk)) then rdaddress_reg <= rdaddress; wraddress_reg <= wraddress; data_reg <= data; wren_reg <= wren; end if; end process input_register; write_read: process(clk, wren_reg, data_reg, q_tmp) type memory is array (((2**widthad) - 1) downto 0) of std_logic_vector(width-1 downto 0); variable RAM : memory; variable i : integer :=0; begin -- initialize RAM for i in RAM'low to RAM'high loop RAM(i) := (conv_std_logic_vector(i,width)); -- RAM(i) <= (conv_std_logic_vector(i,width)); -- RAM(i) := (others => '0'); end loop; if wren_reg = '1' then if (rising_edge(clk)) then RAM(conv_integer(wraddress_reg)) := data_reg; -- RAM(conv_integer(wraddress_reg)) <= data_reg; end if; end if; if (rising_edge(clk)) then q_tmp <= RAM(conv_integer(rdaddress_reg)); end if; end process write_read; q <= q_tmp; end TELESH; --------------- ------------------------------------------------------------------------------- -- -- Title : Test Bench for ram_dp -- Design : UROK2 -- Author : SHUR!K -- Company : SI -- ------------------------------------------------------------------------------- -- -- File : $DSN\src\TestBench\ram_dp_TB.vhd -- Generated : 31.10.2017, 14:46 -- From : f:\ModelSimWork\UROK2\RAM_DP.vhd -- By : Active-HDL Built-in Test Bench Generator ver. 1.2s -- ------------------------------------------------------------------------------- -- -- Description : Automatically generated Test Bench for ram_dp_tb -- ------------------------------------------------------------------------------- library ieee; use std.textio.all; use ieee.numeric_std.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; use ieee.std_logic_1164.all; -- Add your library and packages declaration here ... entity ram_dp_tb is -- Generic declarations of the tested unit generic( width : NATURAL := 8; widthad : NATURAL := 8 ); end ram_dp_tb; architecture TB_ARCHITECTURE of ram_dp_tb is -- Component declaration of the tested unit component ram_dp generic( width : NATURAL := 8; widthad : NATURAL := 8 ); port( clk : in std_logic; wren : in std_logic; rdaddress : in std_logic_vector((widthad-1) downto 0); wraddress : in std_logic_vector((widthad-1) downto 0); data : in std_logic_vector((width-1) downto 0); q : out std_logic_vector((width-1) downto 0) ); end component; -- Stimulus signals - signals mapped to the input and inout ports of tested entity signal clk : std_logic; signal wren : std_logic := '0'; signal rdaddress : std_logic_vector((widthad-1) downto 0) := "00000000"; signal wraddress : std_logic_vector((widthad-1) downto 0) := "00000000"; signal data : std_logic_vector((width-1) downto 0) := "00000000"; -- Observed signals - signals mapped to the output ports of tested entity signal q : std_logic_vector((width-1) downto 0); -- Add your code here ... begin -- Unit Under Test port map UUT : ram_dp generic map ( width => width, widthad => widthad ) port map ( clk => clk, wren => wren, rdaddress => rdaddress, wraddress => wraddress, data => data, q => q ); -- Add your stimulus here ... write: process begin wait for 500 ns; wren <= '1'; data <= "01101001"; wraddress <= "00001001"; wait for 200 ns; wren <= '0'; data <= "00000000"; wraddress <= "00000000"; wait for 200 ns; wren <= '1'; data <= "01101010"; wraddress <= "00001001"; wait for 200 ns; wren <= '0'; data <= "00000000"; wraddress <= "00000000"; wait for 400 ns; wren <= '0'; rdaddress <= "00001001"; wait; end process write ; clock: process begin clk <= '1'; wait for 100 ns; clk <= '0'; wait for 100 ns; end process clock ; end TB_ARCHITECTURE; configuration TESTBENCH_FOR_ram_dp of ram_dp_tb is for TB_ARCHITECTURE for UUT : ram_dp use entity work.ram_dp(telesh); end for; end for; end TESTBENCH_FOR_ram_dp;
  14. Люди добрые ! Подскажите ! Так можно ли подружить графический редактор QII v12.1 c русским языком ?! Или нельзя ! С текстовым редактором разобрался. Неужели все пишут в тексте или комментарии на латинице ?! W7 проф., рус., (32)., официальная. Заранее благодарен !
  15. Да вроде бы всё посмотрел. Видел только для текстового редактора , поменять ANSI в UTF-8. Это было для QII v11.1 Про графический редактор ничего не нашёл. Подскажите , что и как , а то есть много проектов в графическом редакторе !