Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Лекция 1. DE0-Nano. Синтаксис Verilog. Управляющие автоматы

Лекция 1. DE0-Nano. Синтаксис Verilog. Управляющие автоматы (В.В. Подымов, М.С. Шуплецов - Лекции и семинары)

PDF-файл Лекция 1. DE0-Nano. Синтаксис Verilog. Управляющие автоматы (В.В. Подымов, М.С. Шуплецов - Лекции и семинары) Пакеты проектирования сверхбольших интегральных схем (53105): Лекции - 7 семестрЛекция 1. DE0-Nano. Синтаксис Verilog. Управляющие автоматы (В.В. Подымов, М.С. Шуплецов - Лекции и семинары) - PDF (53105) - СтудИзба2019-09-18СтудИзба

Описание файла

Файл "Лекция 1. DE0-Nano. Синтаксис Verilog. Управляющие автоматы" внутри архива находится в папке "В.В. Подымов, М.С. Шуплецов - Лекции и семинары". PDF-файл из архива "В.В. Подымов, М.С. Шуплецов - Лекции и семинары", который расположен в категории "". Всё это находится в предмете "пакеты проектирования сверхбольших интегральных схем" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

Пакеты проектированиясверхбольшихинтегральных схемЛектор:Подымов Владислав Васильевичe-mail:valdus@yandex.ruОсень 2016Лекция 1Часть 1Напоминание основЛогические значенияI0 — логический нольI1 — логическая единицаx — неопределённое значениеIIIнапример, в неинициализированном регистреz — состояние высокого импедансаIIоно нужно в основном для управления шиной, к которойподключено много независимых устройствв ближайшее время это значение нам не понадобитсяЛогические значенияЧто мы строим: схему, между узлами которой в реальномвремени передаются логические значениязначениеxУзел сети10задний фронт(negedge)передний фронт(posedge)времяI0 и 1 — это конкретные уровни напряженияIx — это абстракция: уровень напряжения,соответствующий неизвестному логическому значениюВвод-вывод DE0-NanoLED[7] . .

. LED[0] KEY[1] KEY[0]SW[3] . . . SW[0]CLOCK_50(и ещё GPIO, но они нам пока не нужны)Ввод-вывод DE0-NanoКак ведёт себя ввод-вывод DE0-Nano1KEY[i]010SW[i]Ввод-вывод DE0-NanoКак ведёт себя ввод-вывод DE0-NanoCLOCK_50102 · 10−8 секунд10LED[i]Verilog: модули и шины“Строительный блок” дизайна Verilog — модуль:входы(input)...теловыходы...(output)Входы и выходы (и многое другое) могут быть объединены вмассивы (индексация с ноля; при определении задаютсясмещения сначала последнего, потом первого элемента: [7:0]; востальном — как в C++)Массив проводов (входов, выходов и других) — это шина:A[2]A[1]A[0]B[1]B[0] ≡CA23BCVerilog: определение модуляЛучше всего описывать модуль в отдельном файле срасширением .v и названием, совпадающим с названиеммодуляabmod2Файл mod.v:module mod ( a , b , c ) ;input a ;input [ 1 : 0 ] b ;output [ 2 : 0 ] c ;// d e s c r i p t i o nendmodule// EMPTY LINE !3c(первый вариант )Verilog: определение модуляЛучше всего описывать модуль в отдельном файле срасширением .v и названием, совпадающим с названиеммодуляabФайл mod.v:module mod( input a ,input [ 1 : 0 ] b ,output [ 2 : 0 ] c);// d e s c r i p t i o nendmodule// EMPTY LINE !mod23c(второй вариант )Verilog: главный модульСреди модулей обязательно есть главный (top module): это иесть разрабатываемая схема, которая будет заливаться в FPGAПри работе с DE0-Nano главный модуль будет выглядеть так:CLOCK_50KEY2SW4Файл top.v:module t o p( i n p u t [ 1 : 0 ] KEY ,i n p u t [ 3 : 0 ] SW,i n p u t CLOCK_50 ,output [ 7 : 0 ] LED);// d e s c r i p t i o nendmoduletop8LEDVerilog: способы описания модуляОбычно различают два подхода к описанию модуля:Iструктурный: явно описать инстанциации (страшнаякалька с английского, будем называть их экземплярами)других модулей и связи между нимиIфункциональный: без явного описания структуры задатьвзаимосвязь входов и выходовСтруктурное описание:mm1m2m1Функциональное описание:~f (x1, x2, x3)Verilog: структурное описаниеэкземпляры модулейi1i2i3i1i2m1mm1m2m1oi1i2o1o2o3m2o1o2module m( i n p u t i 1 , i 2 , i 3 , output o1 , o2 , o3 ) ;wire w;m1 u p l e f t ( .

i 1 ( i 1 ) , . i 2 ( i 2 ) , . o (w ) ) ;m1 d o w n l e f t ( . i 1 ( i 2 ) , . i 2 ( i 3 ) , . o ( o3 ) ) ;m2 r i g h t ( . i 1 (w) , . i 2 ( o3 ) , . o1 ( o1 ) , . o2 ( o2 ) ) ;endmoduleВсе используемые имена (в том числе провода: wire)должны быть определены перед использованиемVerilog: структурное описаниенепрерывное присваиваниеiomodule t r i v i a l ( i n p u t i , output o ) ;assign o = i ;endmoduleassign провод = выражение; :Iв любой момент времени (с некоторой задержкой приизменении значения) на проводе должно быть значениевыраженияVerilog: выраженияЧто можно использовать при написании выражений:Iлогические операцииIIарифметические операцииIIнапример, a + b — это сложение двух чисел одинаковойбитности с переполнениемпобитовые операцииIIнапример, a && b — логическое Инапример, a & b — это побитовое И двух битовыхмассивов одинаковой длиныотношенияIнапример, a < b возвращает логическую 1, если число,двоичная запись которого есть a, меньше такового для b, илогический 0 иначеVerilog: выраженияЧто можно использовать при написании выражений:IконкатенацииIIредукцииIIнапример, &a — логическая 1, если все биты a — единицы,и логический 0 иначеусловияIIнапример, {a, b} — битовый массив, составленный из a иbнапример, cond ? a : b работает как в C++; condдолжно иметь логическое значение, а a и b должны иметьодинаковое число битконстантыIнапример, 0 — это логический ноль, а 5’b00110 —пятибитная двоичная запись числа 6(полный список операций спрашивайте у интернета)Verilog: функциональное описаниеблок alwaysОн выглядит так:always @( a or posedge b or negedge c )// s t a t e m e n tВ аргументе перечисляются места (например, провода), при изменении сигнала в которых должно производиться какое-то действиеВ данном случае:I при изменении логического значения в a,Iа также когда в b возникает передний фронт,Iа также когда в c возникает задний фронтДействие перезаписывает значения сигналов модуляПосле выполнения действия получившиеся значения сохраняются в проводах до следующего выполнения блокаVerilog: функциональное описаниеблок alwaysОн выглядит так:always @( a or posedge b or negedge c )begin// s e q u e n c e o f s t a t e m e n t sendДействий можно задавать много, и тогда их обычным программистским образом нужно соединить в составное действиеVerilog: функциональное описаниеблок alwaysОн выглядит так:always @( a , posedge b , negedge c )begin// s e q u e n c e o f s t a t e m e n t sendВ какой-то момент разработчики стандарта Verilog поняли, что“or” писать неудобно, так что разрешили вместо него ставитьзапятуюКакие же действия можно писать в always-блоке?Verilog: функциональное описаниеблокирующее присваиваниеalways @( b , c )beginb = c;a = b;c = a;endIПоследовательно делается следующее:IIIв b выставляется начальное значение из cв a выставляется изменённое значение из bв c выставляется изменённое значение из aБлокирующее присваивание моделирует последовательноевыполнение команд: пока присваивание не выполнено,следующие команды не выполняются(но в конечном итоге строится схема, просто она имеет хитруюструктуру с блоками памяти)Verilog: функциональное описаниенеблокирующее присваиваниеalwaysbeginb <=a <=c <=endI@( b , c )c;b;a;Одновременно делается следующее:IIIв b выставляется начальное значение из cв a выставляется начальное значение из bв c выставляется начальное значение из aВообще говоря, одновременности не бывает, но в реальнойсхеме эти действия будут выполнены близко по времени, иблоки памяти будут организованы так, чтобы выставлялисьименно начальные значенияVerilog: регистры переменныеПри выставлении сигналов в схеме могут понадобитьсядополнительные (неявные) ячейки памятиЧтобы компилятор имел возможность распознать такие местаи по необходимости синтезировать дополнительную память, вVerilog вводится понятие регистра переменной (терминологияменялась в стандарте)Всё, что появляется в присваиваниях (=, <=) слева, должнобыть обявлено как переменная:reg a , b , c ;always @( b , c )beginb = c; a = b; c = a;endВсё остальное может быть объявлено переменнойVerilog: регистры переменныеIимя не может одновременно быть переменной и проводомIв некоторых случаях (например, при встрече в левой частинепрерывного присваивания) имя не может бытьпеременнойIвсе входы и выходы являются проводами по умолчаниюIвсе входы обязаны быть проводамивыходы можно определять как переменные: достаточноIIIдописать в начале модуля reg <имя выхода>; илипри определении выхода написатьoutput reg <имя выхода>вместоoutput <имя выхода>Verilog: функциональное описаниеусловные переходыi f ( cond ) stmt ;e l s e stmt ;case ( a )3 ’ b000 : stmt ;3 ’ b010 : stmt ;3 ’ b011 : stmt ;d e f a u l t : stmt ;endcaseУсловные инструкции тоже можно писатьКак и инструкцию switch-caseОни интерпретируются обычным образом (примерно как вC++)Verilog: параметрыИногда бывает нужно написать несколько невероятно похожих,но всё же разных модулейНапример:module r e g i s t e r 3 ( i n p u t l o a d , r e s e t , c l o c k ,i n p u t [ 2 : 0 ] i n , output reg [ 2 : 0 ] o u t ) ;always @( posedge c l o c k , negedge r e s e t )i f (~ r e s e t ) o u t <= 0 ;e l s e i f (~ l o a d ) o u t <= i n ;endmodulemodule r e g i s t e r 5 ( i n p u t l o a d , r e s e t , c l o c k ,i n p u t [ 4 : 0 ] i n , output reg [ 4 : 0 ] o u t ) ;always @( posedge c l o c k , negedge r e s e t )i f (~ r e s e t ) o u t <= 0 ;e l s e i f (~ l o a d ) o u t <= i n ;endmodule...Verilog: параметрыЧтобы описать сразу всё разнообразие модулей, отличающихсятолько какими-то константными значениями (например,регистры — размером шины), достаточно описать один модульс соответствующими параметрами:module r e g i s t e r#(parameter Width = 5 )( input load , r e s e t , clock ,i n p u t [ Width − 1 : 0 ] i n ,output reg [ Width − 1 : 0 ] o u t);always @( posedge c l o c k , negedge r e s e t )i f (~ r e s e t ) o u t <= 0 ;e l s e i f (~ l o a d ) o u t <= i n ;endmoduleVerilog: параметрыЧтобы описать сразу всё разнообразие модулей, отличающихсятолько какими-то константными значениями (например,регистры — размером шины), достаточно описать один модульс соответствующими параметрами:Или так:module r e g i s t e r ( l o a d , r e s e t , c l o c k , i n , o u t ) ;parameter Width = 5 ;input load , r e s e t , c l o c k ;i n p u t [ Width − 1 : 0 ] i n ;output reg [ Width − 1 : 0 ] o u t ;always @( posedge c l o c k , negedge r e s e t )i f (~ r e s e t ) o u t <= 0 ;e l s e i f (~ l o a d ) o u t <= i n ;endmoduleVerilog: параметрыparameter Width = 5 ;Параметр можно писать вместо числа почти везде в модуле(нельзя — в константах на месте размера)Значение параметра по умолчанию указывается при егоопределении (здесь — 5)Экземпляр параметризованного модуля может быть вызвандвумя способами:Iс явным указанием параметров (указание параметров —такое же, как и входов-выходов)r e g i s t e r r #(.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
440
Средний доход
с одного платного файла
Обучение Подробнее