Курсовые работы по информатике
1 1 1 1 1 1 1 1 1 1 Рейтинг 0.00 (0 Голоса)

Кафедра КиВТ.

Курсовая работа «Разработка модуля временных диаграмм САПР»

Курсовая по дисциплине «ОАПСВТ».

 

Введение.

От успешного решения задач конструирования зависят такие характеристики ЭВМ, как быстродействие, надежность, объем, масса, технологичность, удобство эксплуатации. Расширение масштабов применения современных ЭВМ и систем, повышение требований к их надежности и производительности, рост степени интеграции элементной базы больших интегральных схем (БИС) и связанные с этим особенности приводят к значительному увеличению трудоемкости процесса проектирования. Вместе с тем быстрые темпы развития вычислительной техники диктуют необходимость сокращения сроков выполнения проектных работ. В этих условиях большое значение приобретает автоматизация проектирования.

Основными задачами автоматизации проектирования являются:

1)  сокращение сроков проектирования сложных объектов;

2)  повышение качества проектирования и технической подготовки производства;

3)  снижение стоимости проектирования;

4)  значительное расширение класса принципиально осуществимых по своей сложности проектов, как, например, устройств на БИС.

Система автоматизированного проектирования (САПР) является главным средством автоматизации. Основная задача системы автоматизированного проектирования состоит в том, чтобы оказать помощь разработчику в повышении качества и производительности процесса проектирования. Система автоматизации проектирования призвана осуществлять процесс проектирования с оптимальным распределением функций между разработчиком и ЭВМ и обеспечивать максимальную автоматизацию всех процедур проектирования.

Задача курсового проектирования - разработка программного продукта представляющего собой элемент системы автоматизированного проектирования СВТ. Система должна состоять из нескольких модулей, которые разрабатываются бригадой из нескольких студентов, возглавляемой руководителем бригады - ведущим программистом.

В данной части курсовой работы проектируется модуль интерфейса вывода временных диаграмм.

Интерфейс – это, с точки зрения пользователя, основной процесс системы, посредством которого он может выполнять процедуры ввода-вывода и процедуры диалога с системой. Основной критерий качества интерфейса – удобство пользователя, т. е. минимизация усилий пользователя в процессе работы. Проектируемый интерфейс вывода временных диаграмм является частью общего интерфейса системы автоматического проектирования. Данные, которые получает программа вывода диаграмм, приходят от других модулей системы, но не от пользователя. Работу с этими данными организует пользователь посредством диалога с системой. Процесс диалога – это механизм обмена информацией, который можно рассматривать как оболочку, включающую все входящие в систему процессы по выполнению определенных заданий. Его задачи: определение задания, которое пользователь возлагает на систему, прием данных и передача их соответствующему процессу в нужном формате, запуск процесса, вывод результатов. Функции проектируемого интерфейса заключаются в том, чтобы предоставить пользователю возможности: проконтролировать результаты моделирования посредством анализа временных диаграмм, которые выводит программа, плюс дополнительные функции управления изображением выводимого рисунка.

1. Постановка задачи.

Программа должна выполнять вывод временных диаграмм моделирования работы на экран.

1.1  Исходные данные.

Исходными данными для вывода временных диаграмм служит файл OUT. dat.

В данном файле храниться заданные нам входные характеристики:

А) Количество цепей.

Б) Количество тактов.

В) Уровень сигнала.

1.2 Описание интерфейса.

Вид главного окна программы должен быть примерно следующим:

На этом примере, видны диаграммы для цепи, которую прослеживаем за 87 тактов. Так же расположено специальное окно в котом мы видим, данные полученные из файла OUT. dat для упрощения проверки работоспособности программы. Если будет большое количество тактов, то для этого специально предназначена шкала прокрутки.

Так же установлена кнопка для обновления информации из файла.

2. Описание метода решения задачи.

Так как у нас задано вывод диаграмм на экран, то для наглядности все место на форме мы уделим графическому представлению диаграмм. Программа написана на расширении экрана 800х600 точек и 32 бита цветности, но на большем расширении программа будет выглядеть более наглядной.

Метод заключается в том, что бы наглядно отобразить работу написанную остальными программистами.

Для этого мы воспользуемся Chart1, эта процедура отображает графическое отображение матрицы.

Считывается с файла значения изменения сигнала во времени, и выводится графически на экран.

Так же нужно учитывать неопределенный сигнал Х. Его графически я представил в виде половинного значения, т. е. 0.5.

3. Описание структур данных.

В данном курсовом проекте используются следующие :

А) Chart1: предназначен для вывода диаграммы на экран.

Б) Кнопка «Загрузить» – кнопка предназначена для загрузки файла out. dat и отображения данных в панели StringGrid.

В) Кнопка «Просмотреть» - выполняет отображение графика в Chart1, при помощи функции AddXY, куда вводится: по оси Х – время изменения сигнала, по оси Y – значение этого сигнала, а так же цвет выводного графика.

4. Описание работы программы.

4.1 Пример исходного файла:

OUT. DAT

0 0 1

0 1 1

0 2 1

0 3 1

0 4 1

0 5 1

0 6 1

0 7 1

0 8 1

0 9 1

24 0 1

29 0 0

29 4 0

29 10 0

48 0 X

53 15 1

58 0 0

77 0 0

87 0 1

4.2 Работа программы.

При запуске программы получаем следующее изображение:

Прежде чем нажимать кнопку «Просмотреть», следует указать в ComboBox, номер рассматриваемой цепи.

Нажимая кнопку «Просмотреть» мы получаем по данной цепи временную диаграмму.

Сравнив полученные результаты с данными в таблице и убедившись в правильности работы программы перейдем к тексту программы.

5. Текст программы.

Текст программы приведен в приложении А.

6. Тестирование программы.

Тест №1. Без неопределенного сигнала Х

Так как мы представляем временную диаграмму одной цепи, то можно протестировать ее на нескольких цепях. Таким образом изменения исходного файла для тестирования программы не существенно.

Тест №2. С неопределенным сигналом Х.

Нажав на кнопку «Просмотреть» для второй цепи получим следующие результаты:

Заключение.

В заключении можно отметить, что представленная версия программы не является окончательной и требует некоторых доработок. Тем не менее она выполняет все требуемые функции и работает правильно за исключением особых случаев, связанных с какими-либо ошибками во входных файлах. Программа предоставляет возможность просмотра результатов событийного моделирования некоторого дискретного устройства в виде временных диаграмм. Правильность диаграмм, соответствие рисунка исходным данным и выводимым значениям времени гарантируется. Элементы располагаются в порядке возрастания номеров цепей. Для рисования диаграмм элементы из списка выбираются подряд Интерфейс имеет наиболее оптимальный вид при расширении экрана 800х600 (и глазам не вредно да и выглядит лучше) .

Приложение А.

Текст программы.

//---------------------------------------------------------------------------

void __fastcall TForm1::Button8Click(TObject *Sender)

{

int i, j;

char k[20];

char O_file[255];

if(OpenDialog1->Execute()){

strcpy(O_file, OpenDialog1->FileName. c_str());

FILE *f=fopen(O_file,"r");

fscanf(f,"%i ",&digit1);

StringGrid13->RowCount=digit1;

for (j=1;j<digit1+1;j++)

{

for (i=0;i<3;i++)

{

fscanf(f,"%s",k);

StringGrid13->Cells[i][j]=k;

}

}

Chart1->BottomAxis->Maximum=StrToInt(StringGrid13->Cells[0][j-1]);

fclose(f);

}

for (j=1;j<StringGrid13->RowCount;j++)

{

Form1->ComboBox2->Items->Add(StringGrid13->Cells[1][j]);

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button7Click(TObject *Sender)

{

i=0;j=1;

Series1->Clear();

CurX=CurY=0;

Series1->AddXY(0,0,"",clRed);

for (j=1;j<StringGrid13->RowCount;j++)

{

if (ComboBox2->Text == StringGrid13->Cells[1][j])

{

Mas[0][i]=StringGrid13->Cells[0][j];

Mas[1][i]=StringGrid13->Cells[2][j];

i++;

}

}

j=i;

for (i=0;i<j-1;i++)

{

if (Mas[1][i]!="X")

{

CurY=StrToInt(Mas[1][i]);

Series1->AddXY(StrToInt(Mas[0][i]),StrToInt(Mas[1][i]),"",clRed);

Series1->AddXY(StrToInt(Mas[0][i+1]),StrToInt(Mas[1][i]),"",clRed);

}

else

{

CurY=0.5;

Series1->AddXY(StrToInt(Mas[0][i]),0.5,"",clRed);

Series1->AddXY(StrToInt(Mas[0][i+1]),0.5,"",clRed);

}

}

Series1->AddXY((Chart1->BottomAxis->Maximum),CurY,"",clRed);

}

 

Добавить комментарий


Защитный код
Обновить

По темам:

История Украины

Культурология

Высшая математика

Информатика

Охотоведение

Статистика

География

Военная наука

Английский язык

Генетика

Разное

Технологиеские темы

Украинский язык

Филология

Философия

Химия

Экология

Социология

Физическое воспитание

Растениевосдство

Педагогика

История

Психология

Религиоведение

Плодоводство

Экономические темы

Бухгалтерские темы

Маркетинг

Иностранные языки

Ветеринарная медицина

Технические темы

Землеустройство

Медицинские темы

Творчество

Лесное и парковое хозяйство