Verilog как шахмоты, научившись ходить, не значит что научился играть. От таком раскладе я чето не подумал. Сейчас обкатан такой драйвер непрерывной работы:
Спойлер
Код: Выделить всё
// LCD_driver
always @(posedge clk_1k) //такт одна микросекунда
begin
if(LCD_massiv_count <= 72)
begin
LCD_load = 0;
if(LCD_dclk == 0) // если на ноге LCD_clk = 0, то прогнать драйвер, если 1 то установить ноль.
begin
#1000 LCD_din = LCD_massiv[LCD_massiv_count];
#1000 LCD_massiv_count = LCD_massiv_count + 1;
#1000 LCD_dclk = 1;
end
else LCD_dclk = 0;
end
else
begin LCD_massiv_count <= 1; LCD_load = 1; end
end
Оказывается от функциях я ни чего не знаю. Если в LCD_massiv написать какое то число то оно полностью отобразится на экране, а вот если прогнать такую строчку:
Спойлер
Код: Выделить всё
always @(clk_1c)
begin
LCD_massiv[8:0] = encoder_binaru(min);
LCD_massiv[17:9] = encoder_binaru(d_min);
LCD_massiv[26:18] = encoder_binaru(xors);
LCD_massiv[35:27] = encoder_binaru(d_xors);
end
function reg[9:0] encoder_binaru; input wire[4:0] decimal;
case(decimal)
0: encoder_binaru = 9`b110111100;
1: encoder_binaru = 9`b000001100;
2: encoder_binaru = 9`b111011000;
3: encoder_binaru = 9`b101011100;
4: encoder_binaru = 9`b001101100;
5: encoder_binaru = 9`b101110100;
6: encoder_binaru = 9`b111110100;
7: encoder_binaru = 9`b000011100;
8: encoder_binaru = 9`b111111100;
9: encoder_binaru = 9`b101111100;
10: encoder_binaru = 9`b000000000;
default: encoder_binaru = 9`b111111111;
endcase
endfunction
Вроде и ПДФ американский скачал, чтоб посмотреть как это пишется, все равно результат один, записывается только первый бит. Остальные нули.
И добавил......................
Меня вот что вымораживает: Если весь алвайс блок заменить на дону строчку LCD_massiv <= LCD_massiv + 1; // прогнать все пиксели - Проект занимает 200 вентилей. Проект работает исправно.
А без этой строчки, с CASE блоком, со счетчиками, тригерами и в 100 раз навешаной лубуды, занимает всего 80 вентилей. и фигню какую то показывает.

я ужже незнаю что делать
