Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
module indicator(clock, segments, left_digit, right_digit);
input clock;
output [6:0] segments;
output left_digit;
output right_digit;
//Содержимое 8-ми старших битов этого счетчика отображается на индикаторе
reg [12:0] cnt;
reg [6:0] out_reg;
always @(posedge clock) cnt<=cnt+1;
always @(cnt[12:9])
//"G" - старший бит регистра "Out_Reg"
case (cnt[12:9])
0: out_reg=7'b0111111;
1: out_reg=7'b0000110;
2: out_reg=7'b1011011;
3: out_reg=7'b1001111;
4: out_reg=7'b1100110;
5: out_reg=7'b1101101;
6: out_reg=7'b1111101;
7: out_reg=7'b0000111;
8: out_reg=7'b1111111;
9: out_reg=7'b1101111;
10: out_reg=7'b1110111;
11: out_reg=7'b1111100;
12: out_reg=7'b0111001;
13: out_reg=7'b1011110;
14: out_reg=7'b1111001;
15: out_reg=7'b1110001;
endcase
assign segments=out_reg;
assign left_digit=0;
assign right_digit=0;
endmodule
Т.е., программа просто берет 4 старшие бита счетчика и подает их на вход преобразователя двоичного кода в код семисегментного индикатора. Если задать в мастере "test bench waveform" длительности положительного и отрицательного полупериодов равными по 480000 нС (к ПЛИС подключен генератор на 1024 Гц), а "initial length of test bench" задать равным 1000000000 нС, то при моделировании тактовый сигнал отобразится как положено, а выходы "segments" отобразятся в виде "X" (неопр. состояния). Я создал еще полдесятка простеньких проектов, и с ними та же история. Проект может симулироваться, а может и нет, причем никакой закономерности уловить не удалось. При этом все проекты прекрасно работают в железе. Помогите, плиз, третий день мучаюсь. Могу выслать несимулирующиеся проекты вам, если нужно. И вообще, сам WebPack работает отвратительно - постоянно вылетает в произвольных местах, выдавая системные ошибки вроде "память на может быть READ". Последний сервис-пак и замена ОС с W2K Rus на XP Eng ничего не дали. Заранее спасибо ...