Jump to content
    

FAQ по языкам описания аппаратуры

ИМХО :

 

little[0:3] = 3'bxxxx

little[4] = big[3]

little[5] = big[2]

little[6] = big[1]

little[7] = big[0]

спасибо, des00. не мог найти в стандарте прямого указания на это в встандартах. Precision действует именно так. сложность вопроса была в том, по каккому биту будет происходить выравнивание векторов - по нулевому little-а (и тогда присвоение д.б. little[0]=big[3] little[1]=big[2]...) или по нулевому big-а (и тогда по вашей схеме) - чёткого разъяснения я в стандарте не вычитал

Share this post


Link to post
Share on other sites

NCVerilog (какой версии не помню и посмотреть не смогу) ругается на различиющееся направление индексов и не компилируется.

Share this post


Link to post
Share on other sites

недогляд cadence-a подобные присваивания стандартом не запрещены (раньше mentor на такое тож ругался)

Share this post


Link to post
Share on other sites

Ну как сказать. Я не считаю это неправильным. Это, ИМХО, повышает надежность. Лучше уж самому функцию сделать, чем пропустить в проекте.

Share this post


Link to post
Share on other sites

Лучше уж самому функцию сделать, чем пропустить в проекте.

дело вкуса. но из-зи того, что верилог ещё не научили делать шаблоны функций (тип как параметр), писать свою функцию для пакованного массива каждого типа данных мне не охота. я например на ВХДЛ забил как раз из-за того, что влом писать отдельную функцию сложения для каждого примитивного типа данных (утрирую конечно)

Share this post


Link to post
Share on other sites

Нахожусь в самом начале изучения ПЛИС. (Altera)

Начал изучение с языка AHDL.

Что посоветуете: легко ли и надо ли вообще будет переходить потом на VHDL или достаточно будет знаний в AHDL писать не самые сложные проекты?

 

Многие пишут, что в среде разработки (макс или квартус) уже имеются модули всяких там счетчиков , регистров и т.д и т.п. т.е. их не надо писать с нуля самому, собирая из триггеров и логики, вопрос где я могу почитать про ЭТИ готовые функции на русском?

Честно говоря читая инфу по языку уже столкнулся с непонятием:

с логикой обычной вроде как понимаю, а вот Последовательностная логика

 

SUBDESIGN bur_reg

(

clk, load, d[7..0] : INPUT;

q[7..0] : OUTPUT;

)

VARIABLE

ff[7..0] : DFFE;

BEGIN

ff[].clk = clk;

ff[].ena = load;

ff[].d = d[];

q[] = ff[].q;

END;

что такое DFFE и ff[]??? откуда это без объяснений взялось и как это работает? Из моего понимания DFFE это функция триггера, а ff[].хх это сноска на внутренний вывод этой функции... но вот если я найду например какую нить функцию... или мне например надо найти такую, то где мне почитать что вот эти ff[] выполняют в неизвестной найденной мной функции? (с английским в том то и проблема, медленно.) Помогите плз.

Share this post


Link to post
Share on other sites

DFFE - триггеры количеством 8, с именем ff. Все вместе - регистр разрядностью 8. Описание триггера можно найти в help в MaxPlus или Quartus в разделе примитивы (primitives). ff[].clk = clk; - подключение к 8 триггерам тактового, ff[].ena - вход разрешения загрузки, ff[].d - вход данных, ff[].q - выходы триггеров.

Share this post


Link to post
Share on other sites

ммммм, возможно я неправильно выразился. :1111493779:

повторюсь:

но вот если я найду например какую нить функцию... или мне например надо найти такую, то где мне почитать что вот эти ff[] выполняют в неизвестной найденной мной функции? (с английским в том то и проблема, медленно.) Помогите плз.

 

где мне найти описание СТАНДАРТНЫХ функций альтеры? хотябы основных!!! счетчики, регистры, мультиплексоры.... (на русском языке), прочитав раз на русском, потом легче впитывать описание незнакомых функций на англицком. :rolleyes:

Share this post


Link to post
Share on other sites

Описание выводов этих функций находится в справке. Описание работы счетчиков, регистров и пр. находится в справочниках по цифровой технике. В хелпе на все функции находится таблица истинности для понимания которой не требуется знание английского языка. Описание по 10 страниц на каждый элемент вы не найдете, т.к. оно не нужно.

Share this post


Link to post
Share on other sites

где мне найти описание СТАНДАРТНЫХ функций альтеры? хотябы основных!!! счетчики, регистры, мультиплексоры.... (на русском языке), прочитав раз на русском, потом легче впитывать описание незнакомых функций на англицком. :rolleyes:

 

 

Ключевое слово MegaWizard Plugin manager.

 

Там можно выбрать что Вам нужно, счетчик или еще что то. Quartus щас не стоит у меня, но в одной из менюшек есть такой пункт, кажется в tools...

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

Share this post


Link to post
Share on other sites

У меня вопрос специфический, но вдруг кто-нибудь знает? Помогите, пожалуйста!

 

Меня интересует литература по объектно-ориентированным расширениям VHDL. Больше всего, конкретно - по SUAVE. Книг таких, по-моему, нет, но хотя бы статьи - желательно с описанием синтаксиса.

К примеру, в сети много упоминаний о статьях Peter Asenden, выход на сами статьи - ?

То есть, вроде как-то можно заказать. А если просто так? Может, многого хочу, но я просто спрашиваю.

 

То же самое журналы. Например, хотелось бы найти Design and Test of Computers (April-June 1998).

 

Заранее спасибо, если кто отзовется.

Share this post


Link to post
Share on other sites

хочу поделится одной штукой в Верилоге, которая меня сейчас сильно ухмыльнула (потратил на неё часа 2, отлавливая баг в программе).

как вы думаете чему равно выражение:

 

address=(y_coordinate*(picture_width>>2+1)+x_coordinate)*2;

 

при y_coordinate=2, picture_width=16, x_coordinate=3 ?

 

ЗЫ: ответ для самостоятельной проверки - корень квадратный из 196

и главное, что везде использовал оператор сдвига подобающим образом, а тут при числовых коэфициентах никак не мог заметить ошибки, вот что значит экономить на скобках :)

Share this post


Link to post
Share on other sites

хочу поделится одной штукой в Верилоге, которая меня сейчас сильно ухмыльнула (потратил на неё часа 2, отлавливая баг в программе).

как вы думаете чему равно выражение:

 

address=(y_coordinate*(picture_width>>2+1)+x_coordinate)*2;

 

при y_coordinate=2, picture_width=16, x_coordinate=3 ?

 

ЗЫ: ответ для самостоятельной проверки - корень квадратный из 196

и главное, что везде использовал оператор сдвига подобающим образом, а тут при числовых коэфициентах никак не мог заметить ошибки, вот что значит экономить на скобках :)

 

А железячник наверно бы picture_width>>2 как picture_width[x:2] оформил. И на разрядности бы съэкономил.

(Чтоб без предупреждений)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...