March 21st, 2015

Примерчики на верилоге для вводного курса дизайна на FPGA

Господа (и дамы, особенно иногда читающая меня и банящая потом radulova)! Как вы знаете, по субботам я в порядке общественной нагрузки и набивания руки помогаю Тимуру Палташеву из AMD учить 35 индусов и китайцев (и одного скучающего русского, который уже все знает) в небольшом университете во Фримонте. Полученные в процессе набивки руки педагогические навыки я выливаю в рекомендации менеджеру образовательных программ в нашей компании, который в свою очередь помог мне в проекте перевода на русский язык учебника Digital Design and Computer Architecture, Second Edition by David Harris and Sarah Harris (учебник скоро наконец-то выйдет). Я также недавно стал членом попечительского совета представителей нескольких компаний и университетов по созданию курса по микроконтроллерам.

Так вот. Я на днях наваял для своих преподавательских нужд примерчики на верилоге для вводного курса дизайна на FPGA и хочу чтобы вы их покритиковали. Примерчики я сделал для платы Digilent Basys3 с Xilinx Artix-7 FPGA, но в принципе наши с Тимуром студенты используют и платы Basys2, и Terasic Altera DE2 и другие.



Collapse )

Плата Digilent Basys3 с Xilinx Artix-7 FPGA:



Недавняя фотография ЖЖ-юзерши radulova в момент готовности к поцелую:



Какие примерчики, как вы считаете, должны быть включены в базовый лабораторный практикум по FPGA?

Checking if the board is alive
2(11.8%)
Combinational building block: multiplexor
2(11.8%)
Combinational building block: decoder
1(5.9%)
Combinational building block: encoder
1(5.9%)
Combinational building block: seven-segment driver
1(5.9%)
Sequential building block: counter
2(11.8%)
Sequential building block: counter with load
1(5.9%)
Sequential building block: shift register
1(5.9%)
Sequential building block: shift register with enable
2(11.8%)
Moore and Mealy state machines
0(0.0%)
Ripple-carry adder
1(5.9%)
Carry-lookahead adder
1(5.9%)
Prefix adder
0(0.0%)
Serial adder
0(0.0%)
Combinational multiplier
0(0.0%)
Sequential multiplier
0(0.0%)
Pipelined multiplier
0(0.0%)
Shift-register-based stack
1(5.9%)
Memory + pointer based stack
1(5.9%)

Как насчет экстра?

Unary logic operations
0(0.0%)
Serial parity circuit
0(0.0%)
Pipelined adder
0(0.0%)
Memory macro
1(33.3%)
PLL macro
0(0.0%)
Parametrized modules
0(0.0%)
Using Verilog generate
2(66.7%)

И как насчет процессорно-ориентированных примерчиков на основе подмножества MIPS?

Single-cycle
1(14.3%)
Sequential multi-cycle
2(28.6%)
Single-issue in-order pipeline with stalls
1(14.3%)
Single-issue in-order pipeline with forwarding
1(14.3%)
Multiple-issue in-order pipeline
2(28.6%)

И соединения с периферией?

SPI master writing to a peripheral
1(14.3%)
SPI master reading from a peripheral
1(14.3%)
Microcontroller SPI master + SPI slave in FPGA driving 7-segment LED
1(14.3%)
SPI master in FPGA + microcontroller SPI master driving OLED display
2(28.6%)
Asynchronous data synchronizer to interface MCU and FPGA via GPIO
2(28.6%)