Обработка системы данных

Автор работы: Пользователь скрыл имя, 12 Января 2013 в 21:26, реферат

Краткое описание

Цель работы: Получить основные навыки работы в программе Quartus2. Разработать и настроить интерфейс для работы с ПЛИС
В стандарте RS-485 для передачи и приёма данных используется одна витая пара проводов, иногда сопровождаемая экранирующей оплеткой или общим проводом. Передача данных осуществляется с помощью дифференциальных сигналов. Разница напряжений между проводниками одной полярности означает логическую единицу, разница другой полярности — ноль.

Прикрепленные файлы: 1 файл

Министерство образования и науки Российской Федерации.docx

— 507.95 Кб (Скачать документ)

Лист


Изм

№ докум

Подпись

Дата

 

Лист


Министерство образования  и науки Российской Федерации

Новосибирский Государственный  Технический  Университет

Факультет радиотехники и  электроники 

Кафедра КТРС

 

 

 

РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА

ПО ДИСЦИПЛИНЕ:

«Основы микропроцессорной техники»

 

«Формирование интерфейса »

 

 

 

 

 

 

 

 

Выполнил:.                                Проверил:.

Группа:

Факультет: РЭФ                                               Оценка:_____________

Дата сдачи:

     

                                                                 

 

 

 

     

 

Новосибирск 2012

Цель работы:  Получить основные навыки работы в программе Quartus2. Разработать и настроить интерфейс для работы с ПЛИС

Исходные данные:

Uвых

ЦАП/MSPS/bit(кан)

ОЗУ на 1 канал, не менее, sample

Генерируемые сигналы

дел частоты для каждого канала

Интерфейс

-3-3V

AD9761/40/10(2)

64

Син, треугм

8,16,32,64,128

RS485;200kb/sec;


 

Технические характеристики интерфейса RS-485

В стандарте RS-485 для передачи и приёма данных используется одна витая пара проводов, иногда сопровождаемая экранирующей оплеткой или общим  проводом. Передача данных осуществляется с помощью дифференциальных сигналов. Разница напряжений между проводниками одной полярности означает логическую единицу, разница другой полярности — ноль.

  1. Стандарт RS-485 оговаривает только электрические и временные характеристики интерфейса.
  2. Стандарт RS-485 не оговаривает:
    • параметры качества сигнала (допустимый уровень искажений, отражения в длинных линиях)
    • типы соединителей и кабелей,
    • гальваническую развязку линии связи,
    • протокол обмена.

Выполнение работы:

include "lpm_counter.inc";

include "lpm_rom.inc";

include"lpm_latch.inc";

include "lpm_shiftreg.inc";

include "lpm_ram_dq.inc";

include "mux.inc";

include "busmux.inc";

subdesign dac

(

clock:input;--входная тактовая частота

dac0_data[7..0],dac1_data[7..0],dac_clk[1..0],dac_wrt[1..0],dac_sleep,dac_mode:output;--Сигналы для ЦАП

clk,sig_rs,kn_v: INPUT ;

clk8,clk16,clk32,clk64,clk128,clk_rs485: OUTPUT;--Сигналы делителя

vhod,enable,sig_plis[10..0],clk_prover,Gotovie[7..0],err,ad[7..0],RAM[7..0],clk_zap,DAC_signal[7..0]: OUTPUT;

)

variable

address[8..0]:node;

ovf,ovf_n,dir,c1,c1ch,chet,data[7..0],clk_prover_dreb:node;

shl[6..0]:node;

 

begin

dac_sleep=gnd;

dac_mode=vcc;

dac_clk[1..0]=clock;dac_wrt[1..0]=clock;

 

address[]=lpm_counter(.clock=clock)with(lpm_width=9)returns(.q[]);

dac0_data[]=lpm_rom(.address[]=address[])

           with (lpm_width=8,

     lpm_widthad=9,

     lpm_outdata="unregistered",

 lpm_address_control="unregistered",

 lpm_indata="unregistered",

 lpm_file="dac.mif")

           returns (.q[]););-- Создание сигнала: синкс, треугольник

 

(dac1_data[],ovf_n)=lpm_counter(.clock=!clock,.updown=dir)with(lpm_width=8)returns(.q[],.cout);

ovf = DFF(.d=ovf_n,.clk=clock);

dir = TFF(.t=vcc,.clk=ovf—Сигнал для ЦАП

 

shl[6..0]=lpm_counter(.clock=clk)

WITH (LPM_WIDTH=7,lpm_modulus=127,LPM_DIRECTION="unused")

returns(.q[]);

clk8=shl0;

clk16=shl3;

clk32=shl4;

clk64=shl5;

clk128=shl6; -- Создание делителя тактовой частоты

 

clk_rs485=clk128; -- Присвоение полученной частоты нашему интерфейсу

vhod=!sig_rs; -- Инверсия поступающих данных

sig_plis[]=lpm_shiftreg(.clock=clk_rs485,.shiftin=vhod,.enable=enable)

with(lpm_width=11)

returns(.q[]);--Преобразование кода

chet=sig_plis[1] xor sig_plis[2] xor sig_plis[3] xor sig_plis[4] xor sig_plis[5] xor sig_plis[6]

xor sig_plis[7] xor sig_plis[8] xor sig_plis[10]xor sig_plis[0];--Бит четности

if chet==sig_plis[9] then

err=b"0";

else

err=b"1";

end if;--Сигнал ошибки

clk_prover_dreb=!lpm_counter(.clock=clk_rs485)

with(lpm_width=4,lpm_modulus=11)

returns(.cout);--Сигнал занятости линии

clk_prover=DFF(.d=clk_prover_dreb,.clk=clk128);--Очистка сигнала

enable=DFF(.clk=clk_prover,.d=vhod);--Сигнал работы регистра

data[7..0]=sig_plis[9..2];--Выделение данных

Gotovie[]=lpm_shiftreg(.clock=clk_rs485,.enable=!clk_prover,.data[]=data[7..0],.load=b"1")

with(lpm_width=8)

returns(.q[]);--Промежуточный регистр

ad[]=lpm_counter(.clock=!clk_prover)

with(lpm_width=8

returns(.q[]);--Формирование адреса

RAM[]=lpm_ram_dq(.inclock=clk_zap,.address=ad[],.data[]=Gotovie[],.we=!clk_prover,.outclock=clk128)

with(lpm_width=8,LPM_WIDTHAD=8)

returns(.q[]);--Запись на ОЗУ

clk_zap=DFF(.clk=clk128,.d=clk_prover) XOR clk_prover;--Сигнал начала записи

DAC_signal[]=busmux(RAM[],dac0_data[],kn_v)

with(width=8)

returns(.result[]);-- Полученный сигнал на плис

end;

 

 

Формирование делителя:

 

Рис.1 Диаграмма работы делителя.

Формирование сигнала:

 

 

Рис.2 Диаграмма работы сигнала.

 

 

 

 

Наглядность выполнения поставленной задачи:

 

Рис.3 Диаграмма показывающая правильность работы интерфейса

 

 

 

 

 

 

Вывод: Получен управляемый  генератор сигнала вида синус, треугольник  сформированный ПЛИС. Связь между передатчиком и генератором происходит посредством последовательного интерфейса RS-485. Проведено моделирование ,которое показало ,что происходит верное «понимание» данных с интерфейса и их дальнейшая запись на внутреннюю память ПЛИС.

 

 

 

 

 

 

 

 


Информация о работе Обработка системы данных