Не могу понять почему не работает двунаправленная шина данных?
Вернее она работает но такое ощущение что выходной порт сконфигурирован на работу с открытым стоком.
Порт объявлен так:
inout [15:0] mcu_bus, // Input/output data from/to MCU
// Output pin block
assign mcu_bus = oe ? data_out : 16'hzzzz;
далее в другом модуле:
input [15:0] mcu_bus, // Input/output data from/to MCU
output reg oe, // Output enable
reg [24:0] rdin;
далее rdin <= {WR, RD, address, mcu_bus};
rdin объявлен как fast input register
oe объявлен как fast output enable register
data_out пдключено к регистру rdout, который тоже объявлен как fast output register
в результате всего этого в recource property editor получилась такая конфигурация:
файл d_bus,
однако картинка на шине поучилась ужасная:
файл print_00
Не пойму что я делаю не так? Вроде и частота не большая!
Шина данных подключена к процессору Silicon, (клон 51) его шина всё время настроена на ввод, без подтяжки! Когда силикон передаёт в плис сигнал очень хороший все фронта чёткие и ровные, а ввод из ПЛИС полный бред!
Выходные порты ПЛИС работают от 3.3В.
Выходные буферы шины также объявлены как 3.3v-lvcmos. current strength 2ma
И вопрос по расстановке выходных констрейнов. Расскажите идеологию их расстановки, не сам синтаксис. Кино от Альтеры смотрел, примеры читал, но всё не то. Ни как не могу въехать в идеологию!
Вот например если рассмотреть такие варианты:
На выходы плис подключен светодиод, для индикации, по идее время установки не играет роли. Какое время писать?
На выходы плис подключена клавиатура - по идее как и для светодиода?
На выходе подключено устройство с шиной SPI частота 13 МГц какое время писать для clk и данных? Сейчас время не задано. Весь проект работает на 80 МГц затем частота делиться на 6 и регистры шины SPI вынесены в io-cell register с частотой clk 80 MHz.
Аналогично внешняя шина рассмотренная выше, какое время писать!
Я не пойму как это время рассчитывать? Из каких соображений?