- Команда TCL subst или eval не работает в моем случае..
- Голосовое управление и мир мультимедиа с TCL
- TCL приносит вам голосовой контроль и мир мультимедиа
- • Как мне получить голосовое управление?
- • Как мне сказать телевизору что-то сделать?
- • Как работает голосовое управление?
- МИР МУЛЬТИМЕДИИ НА ВАШИХ КОНЧИКАХ ПАЛЬЦЕВ
- • Онлайн трансляция
- • Google Play
- •Google Play Игры
- • Google TV
- Почему не работает команда tcl
- Использование TCL в разработке на FPGA
- Что такое TCL?
- Зачем вам TCL?
- TCL your FPGA!
Команда TCL subst или eval не работает в моем случае..
Я хочу знать, почему вышеупомянутые случаи не работают для меня. Команда subst должна делать замену переменных и команд. Но почему мои переменные не заменяют.
Может ли кто-нибудь объяснить, что происходит?
Во-первых, вы понимаете, почему » $a » — это не значение, которое вы можете добавить? Это не номер вообще. (Я не имею в виду $a , инструкцию для чтения из переменной и ее замену, я имею в виду строку, состоящую из $ за которой следует a .)
Когда вы устанавливаете фигурные скобки вокруг вещей в Tcl, это означает «ничего не делайте с этой строкой, используйте ее как есть». Всегда. (Иногда вы загружаете эту строку в команду, которая оценивает, но не всегда.) Когда вы помещаете квадратные скобки вокруг вещей, это означает, что эта строка должна быть как скрипт немедленно и использовать результат скрипта в качестве значения для замены. Всегда.
Когда вы выполните:
Вам нужно понять, что вызов sum выполняется при сборке аргументов на subst . Этот вызов вызывает ошибку, поэтому вызов на subst никогда не произойдет. Аналогично используемой форме eval .
Если мы используем несколько менее удивительную форму:
Тогда вы получите это: sum <1> <2>. subst не понимает общую строку как скрипт. С другой стороны, с:
В этом случае вы получаете ошибку не от eval как такового, а скорее из того факта, что вызов sum внутри по-прежнему является ошибочным.
Я полагаю, вы могли бы сделать:
Но на самом деле нет. Там должен быть более простой и менее подверженный ошибкам способ.
Источник
Голосовое управление и мир мультимедиа с TCL
TCL приносит вам голосовой контроль и мир мультимедиа
В мире, управляемом технологиями, поддержание в равновесии является необходимостью. Вот почему TCL включила голосовое управление в нашу последнюю линейку Android TV. По мере того, как мы становимся более эффективными в нашей повседневной деятельности, поиск любимых вещей ничем не отличается.
• Как мне получить голосовое управление?
Голосовое управление можно найти на некоторых телевизорах TCL, распознаваемых на телевизорах со встроенным Android. Именно эта функция позволяет вам говорить с пультом дистанционного управления TCL и сообщать телевизору, что вы хотите видеть на экране.
• Как мне сказать телевизору что-то сделать?
С помощью вашего пульта дистанционного управления TCL вы теперь можете дать своему телевизору команду искать то, что вы выберете, без необходимости набирать что-либо или бороться с удаленной клавиатурой. Это может включать ваши любимые видео о кошках или последние феномены YouTube. Вы сможете получить доступ к любому онлайн-контенту, просто используя распознавание голоса на телевизоре TCL Android.
• Как работает голосовое управление?
Вы просто нажимаете кнопку голосового управления на пульте дистанционного управления и просто говорите. Эта команда покажет телевизору все, что вы просили просмотреть. Это могут быть фотографии, телешоу, фильмы, и все, что можно смотреть онлайн, можно просматривать на телевизоре TCL Android, просто задавая вопрос.
МИР МУЛЬТИМЕДИИ НА ВАШИХ КОНЧИКАХ ПАЛЬЦЕВ
Наша новая линейка UHD 4K-телевизоров, работающих на Android TV, продолжает обеспечивать более четкое качество изображения для действительно захватывающего опыта. Телезрителям также предоставляется гораздо больше контента, чем когда-либо прежде, с неограниченным доступом к миру развлечений через Google Play. Google Play предлагает тысячи фильмов, шоу и игр из Google Play, YouTube и ваших любимых приложений. Сегодня, когда на наших телевизорах так много информации, как мы можем расшифровать всю информацию? Вот краткое руководство к тому, что у вас есть доступ и что лучше всего соответствует вашим потребностям.
• Онлайн трансляция
Онлайн-трансляция описывает мгновенную природу того, что доступно на наших телевизорах сегодня. По сути, это большой объем просматриваемого контента, размещаемого в сети для просмотра людьми.
Традиционно для просмотра значительных объемов данных вам придется подождать, чтобы загрузить файл, что не так с потоковой передачей. Он поставляется в сжатом виде, что позволяет играть постоянно. Вам не нужно ждать его, его можно просматривать в режиме реального времени из любой точки мира.
• Google Play
Google Play — это термин, который включает в себя множество источников просмотра и прослушивания, и, таким образом, они создают приложения. Это специальный магазин приложений для устройств Android и смартфонов. Вы можете получить доступ к фильмам, книгам, играм, музыке и многим другим интерактивным источникам через Google Play.
•Google Play Игры
Как сервис онлайн-игр, он предоставляет вам доступ к многопользовательским играм в реальном времени. Он позволяет сохраняться в облаке, просматривать публичных и частные рейтинги лидеров. Вам больше не нужно, чтобы кто-то сидел рядом с вами, чтобы играть против соперника.
• Google TV
Google TV — это платформа Smart TV, разработанная Google совместно с несколькими другими телекомпаниями несколько лет назад. Он включает в себя операционную систему Android с веб-браузером Google Chrome, который был разработан для создания интерактивного наложения. Это программное обеспечение Google, которое позволяет вам нажимать на панель поиска, перекрывать любой экран, на котором вы сейчас находитесь, и сканировать источники онлайн-видео, не считая прямой эфир, для поиска доступного контента. По умолчанию Google TV не выбирает предпочтительного поставщика, например Netflix, Stan, Utube и т.д. Он просто находит контент и доставляет его вам.
Источник
Почему не работает команда tcl
Обсуждение TCL P725
Телевизор
Обсуждение »
- LED UHD Android TV
- Платформа RT51
- CPU 64-bit A55×4 1.3GHz
- GPU G31x2 800MHz
- OS Android R
- RAM DDR3-1866: 2 Гб
- Память eMMC5.0 16Гб
- Интерфейс Android TV UI + TCL TV UI
- ATV (аналоговое TV): PAL/NTSC/SECAM-DK/BG/I/M
- DTV (цифровое TV): DVB-T/T2/S/S2
- PAL, NTSC
- HDMI1.4 & HDMI2.1, HDCP1.4 & HDCP2.2
- HDR10 Decoding, Dolby Vision
- Сертификация CTS (Google Official Certification), Netflix
- Интернет 2.4GHz/5GHz dual-band Wi-Fi 802.11 b/g/n 2T2R + Ethernet (RJ45, 10/100M)
- Bluetooth 5.0
- Тип подсветки DLED
- Производитель панели CSOT
- Соотношение сторон 16:9
- Разрешение дисплея 3840×2160
- Яркость (кд/м2) 330
- Контрастность 5000:1
- Время отклика (мс) 8,5
- Угол обзора 178°
- Срок службы (в часах) 30 000 (при работе 8 часов в день)
- Цвет 1,07G (8 бит + FRC)
- Частота обновления (Гц) 60
- Цветовая гамма ≥75% DCI-P3(CIE1976)
- Яркость белого ≥60%
- Встроенные динамики (в нижней части)
- Выходная мощность звука 2 x 15 Вт (THD=7%)
- Режимы звучания: Стандартный, Динамический, Кино, Музыка, Голос, Игра, Стадион
- Dolby Audio MS12Z с Dolby Atmos
- Усилитель басов: Вкл, Низкие, Средние, Высокие
- Дополнительные настройки баланса, автоматическая регулировка громкости, цифровой аудиовыход
- Декодирование DTS-HD
- Музыка MP3, WMA, AC4
- Изображение JPEG, PNG, BMP
- Декодеры H.265, H.264, MPEG2/4, VC1, VP9
- видео до [email protected] 4:2:2, [email protected] 4:4:4
- Подключение мыши/клавиатура через USB
Источник
Использование TCL в разработке на FPGA
Всем привет! Давно не писал статьи на любимую тематику и наконец-то созрел на что-то более-менее приличное и стоящее. В этой статье речь пойдет об очень интересной задаче, с которой инженер-разработчик сталкивается чуть ли не каждый день. Предлагаю вам посмотреть, каким образом можно использовать всю мощь и простоту TCL скриптов для проектирования на FPGA. В данной статье описание базируется на ПЛИС фирмы Xilinx, но это не отменяет возможностей TCL скриптов для кристаллов ПЛИС других производителей.
Интересно? Поехали…
Что такое TCL?
TCL (Tool Command Language) — скриптовый язык высокого уровня для исполнения различных задач. Зачастую TCL применяется в связке с графической оболочкой Tk (Tool Kit), но в рамках этой статьи этот аспект рассматриваться не будет. Язык находит широкое применение в различных задачах автоматизации процессов:
- Тестирование комплексных модулей, узлов, частей кода;
- Скоростное прототипирование;
- Создание графических интерфейсов для консольных приложений;
- Внедрение в прикладные приложения и задачи.
Так или иначе, основной функцией языка TCL является автоматизация рутинных задач, и существенное уменьшение времени, затрачиваемого на разработку. Программы на TCL не требуют компоновки и компиляции, что делает задачу отладки скриптов простой и незамысловатой. Интерпретатор TCL распространяется под свободной лицензией и доступен практически для всех платформ (во многих дистрибутивах Linux он доступен по умолчанию). Это означает, что вы можете без каких-либо ограничений использовать его в разработке частных программ и проприетарных приложений. На момент написания статьи актуальная версия TCL – 8.6. Для работы с TCL скриптами, их отладки и визуализации доступно множество дистрибутивов – MyTcl, TclKit, ActiveTcl и т.д. Цена за 1 лицензию ActiveTcl около
1500$, что неоправданно для разработки коммерческих приложений. Из личной практики, большая часть разработчиков пользуется привычной командной строкой.
Все программы на языке TCL состоят из команд, которые разделяются символом «;» или символом начала новой строки. Как и во многих других языках программирования, первое слово — команда, остальные слова — аргументы команд.
command arg1 argt2 … argN
Первая команда создает переменную NewValue, а вторая команда производит печать значения переменной в консоль. Для того, чтобы использовать переменные с пробелами используются кавычки. В остальных случаях они не требуются. Результат исполнения команд представлен на рисунке ниже:
На мой взгляд, главное удобство языка TCL заключается в том, что любой аргумент команды может быть заменен другой командой. Для этого его необходимо поместить в квадратные скобки. На примере ниже я покажу эту возможность. Помимо всего прочего, TCL способен управлять поведением программы на основе различных событий. Это означает, что обработчик команд может выполнять те или иные действия не только по условию, записанному в скрипте, но и по всевозможным внешним событиям (изменение значение переменной во внешнем файле, захват данных в канале, завершение исполнения приложения, достижение счетчика таймера определенного значения и т.д.). Язык TCL богат набором команд, содержит достаточно удобные средства работы с массивами данных и регулярными выражениями. На TCL реализована возможность написания функций и процедур, доступно описание циклов и выражений по условию, что существенно облегчает написание код.
Зачем вам TCL?
Практически все разработчики на FPGA/ASIC рано или поздно сталкиваются с языком TCL в своих проектах. В современной разработке на ПЛИС скрипты TCL активно применяются для задач автоматизации и интеграции процессов. TCL входит во все ведущие САПР ПЛИС – Quartus для Altera, ISE Design Suite и Vivado для Xilinx. Что позволяет сделать TCL?
- создание проекта (добавление исходных файлов, установка опций, иерархии дизайна, назначение файла верхнего уровня и т.д.),
- синтез и трассировка (вплоть до создания независимых стадий с разными настройками),
- тестирование законченных узлов, отдельных модулей и всего проекта целиком,
- автоматическая генерация файлов ограничений (UCF / XCI) на базе шаблонов,
- проверка временных ограничений для синтезированного и трассированного проекта.
- задание параметров цепей, компонентов и примитивов ПЛИС, установка опций для IP-ядер,
и т.д.
Все эти стадии, так или иначе, являются базовыми операциями в процессе разработки на ПЛИС: от создания моделей поведения узлов на языках VHDL/Verilog до отладки законченного проекта в САПР на этапе синтеза и трассировки. Как правило, сложные проекты содержат большое число модулей, написанных разными разработчиками, несколько IP-ядер, файлы ограничений, библиотеки и пакеты функций. В итоге, законченный проект имеет некую иерархичную структуру и набор правил для подключения тех или иных модулей к требуемым узлам проекта. Разработчику сложно держать в голове знания о том, где и как должны находиться отлаженные модули и какие функции они выполняют, если в его работе они используются, но знания об их работе не требуются на этапе разработки (так называемые “black-box” модули). На помощь приходит TCL скрипт, который управляет структурой проекта и связывает требуемые узлы по заранее подготовленным шаблонам. Это обеспечивает гибкость в разработке и даёт возможность повторяемости законченных узлов при миграции от одного проекта к другому.
Как правило, одновременно со стадией создания новых узлов для ПЛИС протекает стадия отладки этих узлов отдельно от проекта и в совокупности с законченной системой. Первичное моделирование проводится абстрагировано от ПЛИС на компьютере в специализированных САПР и средах моделирования: это Modelsim, ISim, Aldec Active-HDL и другие. Для реализации задачи отладки проектов на помощь также приходят TCL скрипты, позволяющие обрабатывать события, возникающие во время моделирования, и принимать решения по результатам работы модели. При отладке RTL-узла чисто на HDL языках может возникнуть сложность написания модели, поскольку любое изменение в поведении схемы приведет к необходимости изменения модели и наборов тестирования. Использование связки модели на HDL языке и TCL скриптах достаточно удобно и для многих решений позволяет ускорить процесс отладки, а также унифицировать сложные тесты.
За стадиями написания кода и его отладки следуют привычные шаги синтеза, размещения и трассировки проекта в кристалле ПЛИС. Пожалуй, это один из самых сложных шагов, который требует больших вычислительных ресурсов рабочей станции и длительного времени исполнения до полного завершения. Скрипты TCL позволяют управлять событиями выполнения на каждой стадии, анализировать результаты тех или иных вычислений для достижения наилучших характеристик по разводке и трассировке проекта (объем занимаемых ресурсов, максимальные тактовые частоты, допустимые значения задержек по таймингам и прочее). Кроме того, TCL дает возможность исключить рутинные действия по выбору и смене настроек, повторному запуску стадий проверок, перезапуску конкретного этапа при создании файла прошивки ПЛИС. Такая автоматизация проектирования практически полностью исключает постоянное присутствие человека на этих стадиях.
Надеюсь, что, дочитав до этих строк, вы уже убеждены в том, что TCL – удобная и мощная штука, которой крайне необходимо пользоваться в своих проектах. Ниже я разберу один из полезных скриптов, который используется нашей командой для создания проекта в среде Vivado, для добавления уже написанных файлов исходных текстов, всевозможных IP-ядер, файлов ограничений XCI и многое другое.
TCL your FPGA!
Рассмотрим один из самых простейших TCL скриптов для автоматического создания проекта на ПЛИС. Предварительные действия совсем минимальны: на локальной машине требуется наличие каталога с исходными текстами проекта, как показано на рисунке ниже.
Для удобства я использую независимые каталоги для проектов, созданных в среде Xilinx ISE Design Suite и в Vivado, если это позволяет семейство ПЛИС (7 серия: Artix, Kintex, Virtex). Исходные файлы лежат в каталоге /src, проект vivado в одноименном каталоге, а проект для среды ISE создается в каталоге /ise, но результаты синтеза и разводки сохраняются в директории /implement. Все это сделано для удобства управления проектом в целом и независимого управления в разных средах. Также это делает иерархию более наглядной и избавляет вас от кучи мусорных файлов в исходниках. Отдельно следует отметить каталог /top в директории исходных текстов, где лежит файл верхнего уровня и необходимые файлы ограничений (для ISE это *.ucf файл, для Vivado это *.xdc файл).
Проект содержит смешанные IP-ядра – старые, созданные в ISE и новые, созданные в Vivado. В каталоге core_k7 лежат все ядра, созданные в CoreGenerator для ISE. Они не регенерируются и не обновляются при использовании в проекте Vivado (причем файл *.vhd используется для моделирования, файл *.ngc – для синтеза, а файл *.xco в проект Vivado не добавляется). В каталоге /ipcores лежат новые ядра в формате *.xci, созданные непосредственно в среде Vivado. Следует отметить, что для каждого ядра требуется отдельная под-директория, иначе для IP-ядер в проекте устанавливается атрибут “LOCKED”, что не дает возможности обновлять ядра и регенерировать их для синтеза.
Перейдем к описанию TCL скрипта:
Первая строка ищет расположение TCL скрипта на локальной машине (находится в каталоге src/tcl) и создает строковую переменную с полным путём до файла.
Во второй строке создается дополнительная переменная, из которой вырезается часть пути. Обе переменные нужны для того, чтобы в следующих переменных вручную не указывать путь до проекта и название файла верхнего уровня.
Переменная PartDev содержит название кристалла ПЛИС. И это единственная переменная, которая меняется в проекте! Все остальные строки скрипта остаются НЕИЗМЕННЫМИ в любом проекте.
На следующей стадии создаются дополнительные переменные, которые определяют расположение исходных файлов, создают директорию vivado, если её нет и т.д. Хочу отметить, что я проверяю наличие директории vivado на локальной машине. Если директория существует – она удаляется и создается заново, чтобы не было никаких конфликтов в новом проекте.
Команда cd меняет рабочую директорию, а команда pwd показывает расположение рабочей директории.
Здесь все примитивно и понятно – создаются переменные, определяющие названия всех исходных файлов в каталоге /src. Для поиска файлов используется процедура findFiles, к которой мы ещё вернемся.
Отдельно производится поиск компонента узла PCI-E, который является базовой и неотъемлемой частью для всех наших проектов.
На следующей стадии производится поиск всех IP-ядер в проекте. Причем в переменную SrcSim записываются названия файлов, которые используются для моделирования. Команда lappend в цикле добавляет к переменной другие значения, формируя массив, который на языке TCL называется листом. На этом подготовительная часть скрипта заканчивается и начинается создание проекта.
Создаем проект, определяем файл верхнего уровня, устанавливаем тип кристалла ПЛИС (в данном примере это Kintex-7 K325T), добавляем найденные исходные файлы.
Устанавливаем опции для файлов моделирования (исключаем из синтеза), задаем параметр GLOBAL_INCLUDE для ядер, используемых в узле PCI-E (это специфическая особенность, требуемая для наших проектов).
На этой стадии производится поиск IP-ядер проекта в формате XCI, проверяется необходимость обновления версии ядра и параметр locked, на который влияет смена кристалла ПЛИС. После анализа ядер происходит обновление и выдается отчет об успешно завершенной операции.
Завершающая стадия, на которой происходит установка настроек синтеза и трассировки – выбирается стратегия из списка доступных. Затем поочередно запускается синтез, размещение и трассировка до полной разводки прошивки ПЛИС.
Как видно, использование скрипта позволяет избавить пользователя от рутинной работы по созданию проекта, добавлению новых файлов, обновлению IP-ядер и многих других однотипных вещей. Скрипт полностью автоматизирован и требует установки единственного аргумента – тип кристалла ПЛИС. Его можно задать как переменную в файле, либо как аргумент, который исполняется одновременно с запуском TCL-скрипта. На рисунке ниже приведен скриншот рабочей области проекта в среде Vivado, который был запущен с использованием скрипта:
Отдельно следует обратить внимание на процедуру findFiles, с помощью которой можно производить поиск всех файлов в директории. Аргументы функции: basedir – каталог поиска, pattern – маска поиска.
Поиск выполняется в несколько шагов: определение рабочей директории как шаблона файла, создание списка по имени файла с указанием полного пути и формирование массива-списка типа list, если найденных файлов больше одного. Пример работы функции findFiles приведен на рисунке ниже. Для пояснения написан цикл, который выводит на экран все найденные файлы. Как видно, указывается полный путь до каждого файла.
Скрипт запускается из командной строки, либо с использованием GUI приложения Vivado. В первом случае необходимо запустить Vivado TCL Shell и написать незамысловатую команду
Примечание: из командной строки можно запустить и графическую среду, поменяв режим запуска mode на gui.
В среде Vivado скрипты запускаются незамысловато и просто: Menu -> Tools -> Run TCL Script…
На этом знакомство с языком TCL завершается. На этом возможности автоматизации проектов не заканчиваются. В этом простом примере я хотел показать, как с использованием TCL скриптов можно автоматизировать проектирование на ПЛИС. Язык TCL является очень удобным, простым для понимания и самое главное – открытым для использования. По личным оценкам, внедрение скриптов в жизнь разработчиков позволяет в несколько раз уменьшить время на полное создание проекта от начальной до завершающей стадии, и оставить больше времени на «чистую» разработку (написание кода). Ниже приведены полезные ссылки для знакомства с TCL-скриптами на FPGA.
Источник