Автор работы: Пользователь скрыл имя, 12 Января 2013 в 21:26, реферат
Цель работы: Получить основные навыки работы в программе Quartus2. Разработать и настроить интерфейс для работы с ПЛИС
В стандарте RS-485 для передачи и приёма данных используется одна витая пара проводов, иногда сопровождаемая экранирующей оплеткой или общим проводом. Передача данных осуществляется с помощью дифференциальных сигналов. Разница напряжений между проводниками одной полярности означает логическую единицу, разница другой полярности — ноль.
Лист
Изм
№ докум
Подпись
Дата
Лист
Министерство образования и науки Российской Федерации
Новосибирский Государственный Технический Университет
Факультет радиотехники и электроники
Кафедра КТРС
РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА
ПО ДИСЦИПЛИНЕ:
«Основы микропроцессорной техники»
«Формирование интерфейса »
Выполнил:. Проверил:.
Группа:
Факультет: РЭФ
Дата сдачи:
Новосибирск 2012
Цель работы: Получить основные навыки работы в программе Quartus2. Разработать и настроить интерфейс для работы с ПЛИС
Исходные данные:
Uвых |
ЦАП/MSPS/bit(кан) |
ОЗУ на 1 канал, не менее, sample |
Генерируемые сигналы |
дел частоты для каждого канала |
Интерфейс |
-3-3V |
AD9761/40/10(2) |
64 |
Син, треугм |
8,16,32,64,128 |
RS485;200kb/sec; |
В стандарте 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..
clk,sig_rs,kn_v: INPUT ;
clk8,clk16,clk32,clk64,clk128,
vhod,enable,sig_plis[10..0],
)
variable
address[8..0]:node;
ovf,ovf_n,dir,c1,c1ch,chet,
shl[6..0]:node;
begin
dac_sleep=gnd;
dac_mode=vcc;
dac_clk[1..0]=clock;dac_wrt[1.
address[]=lpm_counter(.clock=
dac0_data[]=lpm_rom(.address[]
with (lpm_width=8,
lpm_widthad=9,
lpm_outdata="unregistered",
lpm_address_control="
lpm_indata="unregistered",
lpm_file="dac.mif")
returns (.q[]););-- Создание сигнала: синкс, треугольник
(dac1_data[],ovf_n)=lpm_
ovf = DFF(.d=ovf_n,.clk=clock);
dir = TFF(.t=vcc,.clk=ovf—Сигнал для ЦАП
shl[6..0]=lpm_counter(.clock=
WITH (LPM_WIDTH=7,lpm_modulus=127,
returns(.q[]);
clk8=shl0;
clk16=shl3;
clk32=shl4;
clk64=shl5;
clk128=shl6; -- Создание делителя тактовой частоты
clk_rs485=clk128; -- Присвоение полученной частоты нашему интерфейсу
vhod=!sig_rs; -- Инверсия поступающих данных
sig_plis[]=lpm_shiftreg(.
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(.
with(lpm_width=4,lpm_modulus=
returns(.cout);--Сигнал занятости линии
clk_prover=DFF(.d=clk_prover_
enable=DFF(.clk=clk_prover,.d=
data[7..0]=sig_plis[9..2];--Вы
Gotovie[]=lpm_shiftreg(.clock=
with(lpm_width=8)
returns(.q[]);--Промежуточный регистр
ad[]=lpm_counter(.clock=!clk_
with(lpm_width=8
returns(.q[]);--Формирование адреса
RAM[]=lpm_ram_dq(.inclock=clk_
with(lpm_width=8,LPM_WIDTHAD=
returns(.q[]);--Запись на ОЗУ
clk_zap=DFF(.clk=clk128,.d=
DAC_signal[]=busmux(RAM[],
with(width=8)
returns(.result[]);-- Полученный сигнал на плис
end;
Формирование делителя:
Рис.1 Диаграмма работы делителя.
Формирование сигнала:
Рис.2 Диаграмма работы сигнала.
Наглядность выполнения поставленной задачи:
Рис.3 Диаграмма показывающая правильность работы интерфейса
Вывод: Получен управляемый генератор сигнала вида синус, треугольник сформированный ПЛИС. Связь между передатчиком и генератором происходит посредством последовательного интерфейса RS-485. Проведено моделирование ,которое показало ,что происходит верное «понимание» данных с интерфейса и их дальнейшая запись на внутреннюю память ПЛИС.