Перейти к содержанию

    

DSIoffe

Свой
  • Публикаций

    1 688
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о DSIoffe

  • Звание
    Дима
  • День рождения 18.03.1960

Контакты

  • Сайт
    http://www.dsioffe.narod.ru
  • ICQ
    313263348

Информация

  • Город
    Санкт-Петербург

Старые поля

  • Vkontakte
    http://vk.com/dsioffe
  1. Не расширением, а разрешением :) Ну, совпало :)
  2. А в чём проблема? Вы вопрос-то задайте :) Подадите правильную тактовую частоту - получите правильную скорость потока данных, запакуете его в ПЛИС и отправите куда следует.
  3. У этого датчика два выхода, вряд ли их сигналы соответствуют хоть какому-то вещательному или компьютерному стандарту. То есть подключить этот датчик напрямую к какому-то стандартному устройству нельзя. Или Вы не об этом?
  4. Если есть вопросы по той замечательной инструкции, то проще всего позвонить в Резонит, расскажут в лучшем виде. Я пробовал, потом забывал и опять пробовал - помогает.
  5. Я бы посоветовал расставить компоненты, конечно же, руками, и руками же развести критичные цепи, а потом передать проект в Specctra и там закончить трассировку. С первого раза не получится, придётся несколько раз править свою ручную работу. Чтобы не углубляться в изучение Specctra, можно использовать готовые файлы стратегии трассировки, например, вот такой, как я прикладываю. Или поискать другой по вкусу. myideal.zip
  6. Я победил иначе: запускал AD через командный файл, в котором сначала было прописано открытие xls, а потом запуск AD. Зато обновления не вредят.
  7. 2018 Вопросы начинающих

    У меня были разные проблемы с окнами, все они ушли, когда перешёл на AD18. Там окна - как часы.
  8. Большое спасибо. Я сделал MyByte переменной, теперь не надо wait for 0, чувствую себя культурным человеком :)
  9. Спасибо, кажется, дошло. Сигнал может принять новое значение или после завершения всех происшествий, вызванных последним событием, или после оператора wait. У меня в месте вызова процедуры было присвоение значения байту, потом запуск процедуры, потом присвоение значения биту, и всё это время у сигнала нет повода завершить присвоения. То есть, реальное присвоение значения отправляемому байту произойдёт только после первого wait. Так? wait for 0 s помогло. А почему нельзя использовать сигналы в тестбенче? Как бы я мог иначе передавать в I2C разные байты через такую процедуру? to Flip-fl0p Спасибо, я тоже с удовольствием использую 'H'. Только ничего не преобразую, а в тексте описания модуля проекта пишу что-то вроде if ipSCL = '0' then SCL <= '0'; else SCL <= '1'; end if; --Если ipSCL = 'H', то SCL <= 1 , где ipSCL - сигнал на выводе ПЛИС, а SCL - сигнал внутри неё, с которым работает начинка проекта.
  10. Здравствуйте все! Я пишу тестбенч для модуля I2C на VHDL. Делаю процедуру для передачи байта, сам байт передаю как параметр в эту процедуру. Старший бит каждого байта формируется неправильно, остальные - правильно. Картинку прикладываю. Вот код. В нём одна строка wait for 1 ns; закомментирована. Если её раскомментировать, то получается то, что мне надо. Можно бы и так оставить, но некрасиво. Подскажите, пожалуйста, какую тонкость VHDL я не понимаю? Заранее признателен. library ieee; use ieee.std_logic_1164.all; entity myI2C_proc_tb is end myI2C_proc_tb; architecture behavioral of myI2C_proc_tb is constant clk_period : time := 44 ns; signal clk: std_logic := '0'; --тактовая частота модуля I2C_proc signal Reset: std_logic := '0'; signal SCL: std_logic := '1'; signal SDA: std_logic := '1'; constant SCL_period: time := 4.35 us; --период SCLK constant tri: time := SCL_period / 3.0; --треть периода SCK, время, за которое ничего не происходит signal MyByte: std_logic_vector(7 downto 0); --Объявления процедур procedure i2c_start (signal mySCL: out std_logic; signal mySDA: out std_logic) is begin mySDA <= '1'; mySCL <= '1'; wait for tri; mySDA <= '0'; wait for tri; mySCL <= '0'; wait for tri; end procedure i2c_start; procedure i2c_stop (signal mySCL: out std_logic; signal mySDA: out std_logic) is begin mySDA <= '0'; mySCL <= '0'; wait for tri; mySCL <= '1'; wait for tri; mySDA <= '1'; wait for tri; end procedure i2c_stop; procedure i2c_writebyte (signal ySCL: out std_logic; signal ySDA: out std_logic; signal ByteValue: in std_logic_vector(7 downto 0)) is variable i: natural; begin --Передача байта: i := 8; -- wait for 1 ns; while i > 0 loop ySDA <= ByteValue(i - 1); wait for tri; ySCL <= '1'; wait for tri; ySCL <= '0'; wait for tri; i := i - 1; end loop; --Ожидание подтверждения: ySDA <= 'Z'; wait for tri; ySCL <= '1'; wait for tri; ySCL <= '0'; wait for tri; end procedure i2c_writebyte; begin --Тактовая частота: clk <= not clk after (clk_period / 2.0 ); --Собственно моделирование model_l: process begin --Сброс схемы: wait for clk_period * 2; Reset <= '0'; --Посылка: i2c_start(SCL, SDA); MyByte(7 downto 1) <= B"0100001"; MyByte(0) <= '0'; i2c_writebyte(ySCL => SCL, ySDA => SDA, ByteValue => MyByte); --адресный байт MyByte <= X"AA"; i2c_writebyte(SCL, SDA, MyByte); MyByte <= X"AA"; i2c_writebyte(SCL, SDA, MyByte); MyByte <= X"55"; i2c_writebyte(SCL, SDA, MyByte); i2c_stop(SCL, SDA); wait; end process model_l; end behavioral;
  11. AD18

    Да ладно, всё равно проще и быстрее экспортировать наборы слоёв в файл *.layerset и поправить его руками, он текстовый :)
  12. AD18

    Что-то у меня это выглядит совсем иначе.
  13. AD18

    Спасибо! Здорово. Вот только я не нашёл в AD средства добавить этот &. Пытался добавить, а оно ставит в выпадающем списке восклицательный знак в кружочке и говорит, что такой набор уже есть. Пришлось лезть FAR-ом в файл layerset. Иначе нельзя?
  14. На схеме сделать двойной клик по секции, в свойствах установить нужный номер, потом нажать ОК, и секция заменится. Постоянно так делаю, когда рисую схемы с ПЛИС. А база данных здесь не виновата, секции задаются в УГО.
  15. 2018 Вопросы начинающих

    Большое спасибо, замечательный текст. Не дадите ссылку на оригинал? У меня не получилось найти. Заранее признателен.