Выберите элементы, которые вы хотите скрыть на этой странице.
Сохранить
Отмена

## Sidebar

### Смотрите

### Тэги

ModelSim Марсоход2RPI Марсоход3bis шаговый двигатель Катамаран плата Марсоход клеточный автомат Артефакты разработчика Altera Ubuntu VSYNC алгоритм сигнал carry ByteBlaster CPLD SL4A Altera Quartus II Снеговик Марсоход3GW протокол Новый Год игра Змейка SignalTap кошка монтаж плат процессор micron поведенческие блоки шаговый мотор двигатели ядро Linux Android Астротрекер MAX10 RTLViewer Service Pack Вебинар симуляция проекта Half-step 1 через редактор Waveform Verilog USB дескрипторы последовательный порт Gray Code программатор схемотехника мультиплексор debug Altera RTLViewer Yosys Open SYnthesis Suite

### Комментарии

- #### Плата MCY112

  Kiril 13.02.2024 17:30
  Для дельта-сигма достаточно и одного бита. Здесь даже лишнего с запасом. А 10кГц и вправду мало...

  Подробнее...

- #### Плата MCY112

  Артём2 13.02.2024 16:39
  > Двухканальный аудио выход для Дельта Сигма ЦАП (8бит); Что подразумевается под "8бит"? Для вывода PCM ...

  Подробнее...

- #### Плата Марсоход3GW (Gowin)

  Alex63 02.02.2024 11:50
  Здравствуйте! очень хочется такую плату с возможностью припайки добавочной микросхемы памяти IS62C1024AL ...

  Подробнее...

- #### Белая медведица на льдине.

  VladimirRunner 01.02.2024 17:46
  Привет! Нашел ваши статьи хотел узнать можно ли к вам обратиться помочь запрограммирова ть адресные ргб ...

  Подробнее...

- #### Программатор MBFTDI в среде Altera Quartus II , версия 1.1b

  Серый Волк 21.01.2024 18:48
  Подскажите пожалуйста - для чего выведены пины на программаторе "COM"?

  Подробнее...

### На форуме

- Нет сообщений для показа

# Простейший интерпретатор Forth в плате M02mini

Подробности
  nckm
  FPGA & Verilog блог
  Создано: 14 октября 2020
  Просмотров: 8043

Empty

В продолжении предыдущей статьи про процессор Forth ji в FPGA.. Мне удалось написать на форте простой интерпретатор. Он принимает из консоли через последовательный порт строки и разбирает их. Если выбранное слово из потока это число, то оно остается на стеке. Если не число, то возможно это форт слово. Интерпретатор пытается найти слово с своем словаре и если находит, то исполняет его.

На видео выше я попробовал продемонстрировать и записать работу интерпретатора.

Код интерпретатора выглядит вот так:

    : main
        2drop
    	begin \начало вечного цикла
            tib d# 80 accept cr	\ строка из консоли записывается в tib (text input buffer) длиной 80 байт
            tib# !				\ длина принятой из консоли строки записывается в переменную tib#
    		d# 0 >in !			\ изначально разбор строки начинается с нулевого символа, запишем 0 в переменную >in
    			begin			\ начнем поиск всех слов в принятой строке
    			  parse-name	\ возьмем из tib слова по очереди, на стеке останется адрес строки и длина строки, "name" -- c-addr u
    			  dup			\ возьмем на стек длину слова еще раз, на стеке c-addr u u
    			  while			\ зайдем в обработку слова, если его длина не ноль
    				\ msg-word print-str space 2dup type
    				2dup d# 0. 2swap >number \ попробуем преобразовать строку в число
    				0=			\ если в строке не осталось символов, значит была строка-число
    				if
    					2drop	\ удалим лишнее со стека
    					\ space msg-numb print-str
    					rot rot 2drop \ оставим на стеке только полученное число и сверху адрес строки с длиной
    				else
    					drop 2drop \ было не число, так что удалим лишние слова со стека
    					sfind	\ попробуем найти слово в словаре
    					if
    						\ space msg-exec print-str
    						\ drop
    						execute \ исполним найденное слово
    					else
    						drop \ слово не найдено в словаре, удалим лишнее слово со стека
    						space msg-unkn print-str \ напечатаем сообщение об ошибке
    					then
    				then
    				\ cr
    			repeat
    			2drop \ удалим адрес последней строки и ее длину со стека
    	again \ к началу вечного цикла
    ;

Я надеюсь комментарии помогут разобраться, как это работает.

Полный исходник проекта лежит на github: https://github.com/marsohod4you/M02mini/tree/master/forth_j1

- ВКонтакте
- Одноклассники
- Мой Мир
- Twitter
- Viber
- WhatsApp
- Skype
- Telegram

- Назад
- Вперёд

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

Имя (обязательное)

E-Mail (обязательное)

Осталось: 1000 символов

Подписаться на уведомления о новых комментариях

Отправить
Отменить