Программа Digital Signal Analyzer v1.00 08-Apr-98 Краткое описание. ================= Эта программа предназначена для двух целей: 1. Работа с 16-канальным цифровым осцилографом (64кбит на канал). 2. Просмотр осцилограмм с расширениями #?.hst и #?.trf, которые генерирует программа PLDSHELL фирмы ALTERA на IMB PC. Предупреждение. =============== Функции работы с hardware (в меню "Hardware") напрямую (минуя scsi.device) обращаются к IDE портам, поэтому не допускается их выполнять, во время чтения/записи IDE винта. За последствия я не отвечаю. Файлы. ====== dsa - запускаемый файл. dsa_russian.txt - этот текст. dsa.s - исходник программы на ассемблере. dsa.inc - include к исходнику программы dsa.sch - схема электрическая принципиальная в формате PCAD v4.5 (на IBM PC) osc16.dsa - тестовые осцилограммы в собственном формате xxx202.hst - осцилограмы в формате pldshell 28mhz_A1260_50_cas.dsa - осцилограма /CAS на SIMMe от моего акселя. ;) Что надо для запуска. ===================== Запуск производится из shellа. Требования. =========== - Для работы с hardwere вам оно потребуется. ;) Hо для просмотра осцилограмм железку можно не паять. :) - Kickstart 2.0 и выше. - По идее любой процессор, хотя на всех кроме 68060 не проверялось. Hу нет у нас в городе других. ;-D Разве что аксель вынуть... А, да в эмуляторе на пц работает, т.е. на 020 будет точно. ;-))) Принцип работы dsa. =================== Данные с каналов запоминаются в статической памяти, а затем через IDE интерфейс поступают в амигу (или пц, если кто прогу напишет. ;). Затем эти данные в наглядной форме отображаются на экране. Hardware ======== Входные сигналы, выходящие наружу. strt_s1 сигнал, который начинает оцифровку по определённому уровню в зависимости от strt_sw1 strt_s2 сигнал, который начинает оцифровку по определённому фронту в зависимости от strt_sw2 Старт начинается при двух условиях: Когда strt_s1 достигнет определённого уровня и когда strt_s2 сделает перепад по определённому фронту. Таким образом можно засечь ситуацию первого обращения (перепад) после сброса (уровень). stop_s1 сигнал, который останавливает оцифровку по определённому уровню в зависимости от stop_sw1 stop_s2 сигнал, который останавливает оцифровку по определённому уровню, если этот уровень продержится 256 тактов xclk. Уровень определяется stop_sw2. Стоп происходит при выполнении любого из этих вышеперечисленных условий. xclk частота оцифровки, которая подаётся непосредственно на выборку статической памяти и от неё происходит синхронизация всей схемы. Максимальная частота в районе 30-40mhz xd15-xd0 16 цифровых входов (каналов). При желании на них можно повесить ацп или компаратор. Естественно всё это входные сигналы и они могут замыкатся между собой в любых комбинациях. Управляющие сигналы внутри платы. В схеме находится две кнопки. but_strt - принудительный старт оцифровки. but_stop - принудительный стоп оцифровки. В схеме находится также шесть переключателей. strt_sw1 определяет уровень для strt_s1. 0 (on) - ловит логический 0 на strt_s1 1 (off) - ловит логическую 1 на strt_s1 strt_sw2 определяет фронт для strt_s2. 0 (on) - ловит положительный фронт strt_s2 1 (off) - ловит отрицательный фронт strt_s2 stop_sw1 определяет уровень для stop_s1. 0 (on) - ловит логический 0 на stop_s1 1 (off) - ловит логическую 1 на stop_s1 stop_sw2 определяет уровень удержания для stop_s2. 0 (on) - ловит удержание stop_s2 в логической 1 в течение 256 тактов xclk. 1 (off) - ловит удержание stop_s2 в логическом 0 в течение 256 тактов xclk. stop_sw3 определяет наличие или отсутствие задержки при любой остановке на 256 тактов xclk. 0 (on) - задержка есть 1 (off) - задержки нет stop_sw4 определяет останавливатся или нет при достижении последних байтов внутренней памяти. Если не остановится, то оцифровка будет происходить по кольцу заново. Сигналы IDE интерфейса. /ide_ior, /ide_iow, /ide_cs0, /reset, ide_d15-ide_d0 - стандартные сигналы IDE. :) Описание портов на чтение. $da2000 (IDE порт 0) - чтение очередной 16-битной порции данных и автоинкремент адреса внутренней памяти. $da2004 (IDE порт 1) - инициализация тригеров и подготовка схемы к стару (без этого сигнала выполнение старта и стопа происходить не будет. $da2008 (IDE порт 2) - принудительный старт со стороны компьютера. $da200c (IDE порт 3) - принудительный стоп со стороны компьютера. $da2010 (IDE порт 4) - сброс счётчиков адреса внутренней памяти на 0. Описание портов на запись. $da2018 (IDE порт 6) бит 4 (бит 12 для 16-разрядного обращения) =0 активирование master-винта =1 активирование dsa Я думаю, что это не совсем корректный механизм, так как master не знает о существовании dsa и почему-то свои порты не отключает, но почему-то мои буфера побеждают и прокачивают IDE шину. ;) Кому это не нравится он может мне подробно, и желательно по русски объяснить мне, как аппаратно устранить этот конфликт. Док у меня хватает, но нет времени их изучать. Так что помогайте делом, а не доками ;-) А вобще и так работает... Расположение микросхем на моей макетке. Это расположение не идеально, но достаточно оптимизировано. Печатную плату я не разводил за нехваткой времени. вид со стороны мотажа микросхем (solder) ----------------------------- | | | dd1 ide | dd2 dd3 dd4 sw-блок connector | dd5 dd6 dd7 dd8 | | dd9 dd10 dd11 dd12 ide | dd13 dd14 dd15 dd16 power | dd17 dd18 dd19 connector | dd20 dd21 dd22 dd23 | | dd24 dd25 dd26 dd27 | | dd28 dd29 dd30 dd31 dd32 | | | ---input signals------------- Также необходимо повесить между питаниями около 10 блокировочных кондюков. Распределить их нужно примерно равномерно. Питания у всех микросхем, как обычно по краям. Земли ide разъема необходимо все припаять - это уменьшит наводки. Питание разведено и меня так (gnd и +5v проложены рядом). ----------------------------- | | | | | | | |-ide | | | | | |-connector | ----------------------| | | | | | | |-ide | |-power | | | | | |-connector | ----------------------| | | | | | | | | | | | | | | | | | ---input signals------------- Компоненты. Схема рисовалась из уже готовых симов серий 155 и 555 (74xx и 74LSxx) Поэтому на схеме надо смотреть на обозначение ddxx сверху микросхем, где xx номер чипа. Вот соответствие реальным микросхемам: номер название аналог ------------------------ dd1 кр1554тм8 74ac175 dd2 кр1554тм2 74ac74 dd3 кр1554ид7 74ac138 dd4 кр1554ид7 74ac138 dd5 кр1554тм2 74ac74 dd6 кр1554тм2 74ac74 dd7 кр1554тм2 74ac74 dd8 кр1554ли3 74ac11 dd9 кр1554ла3 74ac00 dd10 кр1554лн1 74ac04 dd11 кр1554ли1 74ac08 dd12 кр1554лп5 74ac86 dd13 кр1554тм2 74ac74 dd14 кр1554тм2 74ac74 dd15 кр1554тм2 74ac74 dd16 кр1554лл1 74ac32 dd17 w24m512ak-15 или другая static ram 64к x 8 dd18 w24m512ak-15 или другая static ram 64к x 8 dd19 кр1554ап5 74ac244 dd20 кр1554ап5 74ac244 dd21 кр1554ли6 74ac21 dd22 кр1554ап5 74ac244 dd23 кр1554ап5 74ac244 dd24 кр1554ир23 74ac374 dd25 кр1554ли6 74ac21 dd26 кр1554ир23 74ac374 dd27 кр1554ли6 74ac21 dd28 кр1554ие7 74ac193 dd29 кр1554ие7 74ac193 dd30 кр1554ие7 74ac193 dd31 кр1554ие7 74ac193 dd32 кр1554ид7 74ac138 Заменяя 1554 на другую серию (1533, 555, 155, 531 и др.), помните, что от этого пострадает быстродействие и усилятся помехи. Hа 1531 серию заменять можно без потерь быстродействия, но могут усилится помехи по питанию. У меня сейчас не все 1554 установлены. А именно: dd1 - 1533, dd3-dd4 - 1533, dd8 - 1533, dd10 - 1531, dd12 - 555, dd28-dd32 - 1533. При этом всё работает на 28Mhz. Выше пока не исследовал, но на 50 не работает, хотя возможно из-за длинных проводов. По идее, если поставить 10нс память и все 1554, то скорее всего будет работать. резисторы в районе 2ком-5ком. Oписание команд меню. ===================== Меню File: Load загрузка dsa-файла с запросом через asl.library Save запись dsa-файла Save as запись dsa-файла с запросом через asl.library Import загрузка pldshell-файла с запросом через asl.library Export запись pldshell-файла с запросом через asl.library About о мне ;) Quit выход Меню Hardware: Get osc оцифровать текущее состояние Refresh mode переодически делать get osc (выход - любая кнопка или выбор любого пункта меню) Init osc подготовка к оцифровке (как взвод курка :) Start osc подготовка и принудительный старт Stop osc стоп Make osc получить осцилограммы из буфера Если ткнуть в осцилограмму, то туда переместится курсор. Кнопка-движок внизу между двумя slideramи - задание размера полей. Oписание команд с клавиатуры. ============================= "+", "-", "+" и "-" на расширенной клавиатуре - увеличение и уменьшение масштаба. (с shift менее резко). стрелки - водить "курсор" по осцилограммам. "u" "d" - передвигать осцилограмму (под курсором) вверх и вниз. Автор ===== Author name: Соболев Владимир Олегович Place: Россия, Екатеринбург. Тел: 7-3432-654708 Fido: 2:5080/52.69 Amiganet: 39:245/200.3 E-mail: vsobolev@hotmail.com amiga_man@usa.net Config: A1260-50Mhz/32Mb Ram/3.5Gb Fujitsu HDD/15"CityStar/Acorp33600 Программа и исходники freeware, так что юзайте наздоровье. ;-) Пусть теперь обломаются те фирмы, которые продают подобные девайсы худшего качества (правда зато с двумя ацп) за 300$. ;) Коментарии ========== Эта программа и hardware к ней создавались, как вспомогательный инструмент для разработки акселей/скандублёров и прочей цифровой техники. Так что устойчивость программы не гарантирую. Возможно будет глюкать. Если вы хотите что-то дополнить или исправить, то сначала попробуйте сами, а потом можете мне прислать. Буду рад, если меня не будут по каждой мелочи теребить (хотя на русском это ещё терпимо), так как у меня и без этой программы много дел. Hо выслушать пожелания я всегда рад. История ======= 1. 08-Apr-1998 v1.00 Первая версия. Многое что хотелось ещё не сделано...