In Java 8, the java.util.function has numerous built-in interfaces. Other packages in the Java library (notably java.util.stream package) make use of the interfaces defined in this package. Java 8 developers should be familiar with using key interfaces provided in this package. This presentation provides an overview of four key functional interfaces (Consumer, Supplier, Function, and Predicate) provided in this package.
Presentation provides introduction and detailed explanation of the Java 8 Lambda and Streams. Lambda covers with Method references, default methods and Streams covers with stream operations,types of streams, collectors. Also streams are elaborated with parallel streams and benchmarking comparison of sequential and parallel streams.
Additional slides are covered with Optional, Splitators, certain projects based on lambda and streams
This presentation goes through what Inversion of Control is, which IOC patterns that exists, which of the patterns you should use and when you should use them.
In Java 8, the java.util.function has numerous built-in interfaces. Other packages in the Java library (notably java.util.stream package) make use of the interfaces defined in this package. Java 8 developers should be familiar with using key interfaces provided in this package. This presentation provides an overview of four key functional interfaces (Consumer, Supplier, Function, and Predicate) provided in this package.
Presentation provides introduction and detailed explanation of the Java 8 Lambda and Streams. Lambda covers with Method references, default methods and Streams covers with stream operations,types of streams, collectors. Also streams are elaborated with parallel streams and benchmarking comparison of sequential and parallel streams.
Additional slides are covered with Optional, Splitators, certain projects based on lambda and streams
This presentation goes through what Inversion of Control is, which IOC patterns that exists, which of the patterns you should use and when you should use them.
This presentation contains information about don't care conditions alongwith its examples, Karnaugh-Map i.e. K-map simplification using don't care conditions and seven-segment display with don't care conditions.
Selection Statements
Using if and if...else
Nested if Statements
Using switch Statements
Conditional Operator
Repetition Statements
Looping: while, do, and for
Nested loops
Using break and continue
In this chapter we will get familiar with the console as a tool for data input and output. We will explain what it is, when and how to use it, and how most programming languages access the console. We will get familiar with some of the features in C# for user interaction: reading text and numbers from the console and printing text and numbers. We will also examine the main streams for input-output operations Console.In, Console.Out and Console.Error, the Console and the usage of format strings for printing data in various formats.
Function in PL/SQL, Create Function Syntax, Example – No Parameters in Function , Example – Testing RetrieveSalary Function, Example Function with Parameter, Dropping a Function
Java 9/10/11 - What's new and why you should upgradeSimone Bordet
Java 11 is the new Java release and, differently from Java 9 and Java 10, it is a "Long Term Support" release - we will see what that means exactly.
This presentation details the main new features of Java 11, starting from licensing (where there are important changes - in particular the Oracle JDK may only be used in production if you have a support contract with Oracle), to arrive to the new Java 11 features, with a quick peek back at what was introduced in Java 9 and Java 10.
The main Java 11 arguments are:
• Two new garbage collectors: EpsilonGC e ZGC
• Support for TLS 1.3
• Possibility to execute a single source file
• New HTTP client based on the Flow API
• Removal of modules (CORBA, JTA, @Inject, ecc.)
• Bytecode news (nest-mates, dynamic constants)
This presentation contains information about don't care conditions alongwith its examples, Karnaugh-Map i.e. K-map simplification using don't care conditions and seven-segment display with don't care conditions.
Selection Statements
Using if and if...else
Nested if Statements
Using switch Statements
Conditional Operator
Repetition Statements
Looping: while, do, and for
Nested loops
Using break and continue
In this chapter we will get familiar with the console as a tool for data input and output. We will explain what it is, when and how to use it, and how most programming languages access the console. We will get familiar with some of the features in C# for user interaction: reading text and numbers from the console and printing text and numbers. We will also examine the main streams for input-output operations Console.In, Console.Out and Console.Error, the Console and the usage of format strings for printing data in various formats.
Function in PL/SQL, Create Function Syntax, Example – No Parameters in Function , Example – Testing RetrieveSalary Function, Example Function with Parameter, Dropping a Function
Java 9/10/11 - What's new and why you should upgradeSimone Bordet
Java 11 is the new Java release and, differently from Java 9 and Java 10, it is a "Long Term Support" release - we will see what that means exactly.
This presentation details the main new features of Java 11, starting from licensing (where there are important changes - in particular the Oracle JDK may only be used in production if you have a support contract with Oracle), to arrive to the new Java 11 features, with a quick peek back at what was introduced in Java 9 and Java 10.
The main Java 11 arguments are:
• Two new garbage collectors: EpsilonGC e ZGC
• Support for TLS 1.3
• Possibility to execute a single source file
• New HTTP client based on the Flow API
• Removal of modules (CORBA, JTA, @Inject, ecc.)
• Bytecode news (nest-mates, dynamic constants)
The lecture is about structural description of projects in VHDL: component declaration, component instantiation, for...generate, if...generate statements
Statements in VHDL - Sequential Statementsvitaliykulanov
The lecture is about statements in VHDL - classification and principles of work. Sequential statements (operators) in VHDL: principles, operators, examples
2. Файловый ввод/вывод в VHDL
Используется на этапе моделирования/тестирования/отладки
проектных решений (чаще всего в составе testbench-модулей):
• работа с большим объемом (набором) входных/выходных
данных
• инициализация памяти (RAM, ROM) в составе тестируемого
устройства
• возможность «структуризации» обрабатываемых данных
разные форматы файлов: JSON, XML, CSV, YAML
множество «источников/приемников»
• необходимость вести «логирование» процесса
моделирования/тестирования/отладки
• возможность накопления статистики
• "Run and Fun"
Не входит в «синтезируемое» подмножество языка:
• только для моделирования
3. Файловый ввод/вывод в VHDL
Декларация файлового типа
Декларация объекта
файлового типа
(файлового дескриптора)
Операции чтения/записи
Закрытие файла
Данные какого типа
будем хранить?
Тот кто будет
«посредником» между
файловой системой и
проектным описаниемОткрытие файла
Режимы открытия:
«Автоматический»
«Ручной» (явное)
4. Декларация файлового типа
Объект типа FILE – специальный тип, который служит
«интерфейсом» между VHDL описанием и хост-окружением
Определение типа файла указывает тип объекта, который
может храниться в файле данного типа
Файлы могут хранить объекты только одного типа
Декларация файлового типа:
TYPE type_name IS FILE OF type_mark;
Файловый тип
Тип данных
Предопределенный
Пользовательский
Скалярные (простые)
Записи (RECORD)
Одномерные массивы
Многомерные массивы
Указательные
Файловые
Защищенные
-- хранит данные типа INTEGER
TYPE int_file IS FILE OF INTEGER;
-- хранит данные в виде символов
-- таблицы ASCII
TYPE TEXT IS FILE OF STRING;
TYPE state_file IS FILE OF state;
5. FILE file_id: type_name
[[OPEN open_mode] IS file_logical_name];
Декларация объекта файлового типа
TYPE type_name IS FILE OF type_mark;
Режимы открытия файла:
READ_MODE – режим чтения (по
умолчанию)
WRITE_MODE – режим записи
APPEND_MODE – режим добавления
Файловый дескриптор
FILE_OPEN_KIND IS (READ_MODE,
WRITE_MODE,
APPEND_MODE)
Имя (путь) файла
(строковое выражение)
Если секция присутствует,
тогда файл автоматически
открывается/закрывается:
в начале/конце моделирования
(если объявлен в пакете,
архитектурном теле)
при вызове подпрограммы и
выходе из нее (если объявлен в
подпрограмме)
6. Примеры
TYPE int_file IS FILE OF INTEGER;
-- автоматический режим открытия/закрытия файла,
-- файл "in.dat" находится в текущей директории
FILE integer_file: int_file OPEN READ_MODE IS "in.dat";
-- объявление файлового дескриптора, предполагается, что
-- связывание между файловым дескриптором и физическим
-- файлом будет производиться позже (см. далее)
FILE data_file: int_file;
-- автоматическое открытие файла в режиме чтения
FILE stimulus: int_file IS "vector.dat";
-- пользовательский тип данных
TYPE states IS (IDLE, ERROR, SLEEP, RUNNING);
TYPE states_file IS FILE OF states;
-- *nix ОС хост система. Если файл не существует, то он
-- будет создан (если это возможно)
FILE states_log: states_file OPEN WRITE_MODE IS
"/home/user/project/logs/states.log";
7. Работа с файлом. Чтение/Запись
При открытии файла работа с ним выполняется последовательно,
начиная с первого элемента
Для чтения данных из файла используется процедура READ
Для записи данных в файл используется процедура WRITE
Для определения конца файла используется функция ENDFILE
В языке VHDL определены процедуры чтения и записи только для
предопределенных типов данных
• для пользовательских типов данных необходимо писать
собственные процедуры, основанные на базовых
PROCEDURE READ(FILE f: FILE_TYPE; value: OUT type);
PROCEDURE READ(FILE f: FILE_TYPE; value: OUT type;
length: OUT: NATURAL);
PROCEDURE WRITE(FILE f: FILE_TYPE; value: IN type);
FUNCTION ENDFILE(FILE f: FILE_TYPE) RETURN BOOLEAN;
8. Пример чтения из файла
GENERIC(load_file_name: STRING := "/tmp/rom.dat");
...
behavior: PROCESS IS
SUBTYPE word IS STD_ULOGIC_VECTOR(0 to DATA_WIDTH - 1);
TYPE storage_array IS ARRAY (NATURAL RANGE <>) OF word;
VARIABLE storage: storage_array(0 TO 2**ADDRESS_WIDTH – 1);
VARIABLE index: NATURAL;
TYPE load_file_type IS FILE OF word;
FILE load_file: load_file_type OPEN READ_MODE IS load_file_name;
begin
-- инициализируем ROM содержимым из файла load_file_name
index := 0;
WHILE NOT ENDFILE(load_file) LOOP
read(load_file, storage(index));
index := index + 1;
END LOOP;
-- работа с ROM
...
END PROCESS behavior;
...
word_0
word_1
word_2
...
word_n
storage
2**ADDRESS_WIDTH
9. Пример чтения из файла
TYPE integer_vector IS ARRAY (INTEGER RANGE < >) OF INTEGER;
IMPURE FUNCTION read_array (file_name: STRING;
array_length: NATURAL)
RETURN integer_vector IS
TYPE integer_file IS FILE OF INTEGER;
FILE data_file: integer_file OPEN READ_MODE IS file_name;
VARIABLE result: integer_vector(1 TO array_length)
:= (OTHERS => 0);
VARIABLE index: integer := 1;
BEGIN
WHILE NOT ENDFILE(data_file) AND index <= array_length LOOP
READ(data_file, result(index));
index := index + 1;
END LOOP;
RETURN result;
END FUNCTION read_array;
-- инициализация константы списка коэффициентов
CONSTANT coeffs : integer_vector := read_array("coeff.dat", 16);
10. PROCESS IS
CONSTANT MAX_COUNT: NATURAL := 5;
VARIABLE count: INTEGER := 1000;
TYPE int_file IS FILE OF INTEGER;
FILE data: int_file OPEN WRITE_MODE IS "file_demo.dat";
BEGIN
FOR i IN 1 TO MAX_COUNT LOOP
IF i >= MAX_COUNT THEN
EXIT;
END IF;
WRITE(data, count);
count := count + 1;
END LOOP;
WAIT;
END PROCESS;
Пример записи в файл
View in HEX
100010
0x000003e8
4 + 4 + 4 + 4 = 16 байт
100110
0x000003e9
100210
0x000003ea
100310
0x000003eb
11. Открытие и закрытие файлов
явным образом
Допустима декларация файлового дескриптора (объекта) без явного
связывания его с физическим файлом
FILE lut_file, result_file: int_file;
Для открытия/закрытия файловых объектов (заданных в таком стиле)
используются процедуры FILE_OPEN() и FILE_CLOSE():
TYPE file_type IS FILE OF element_type;
TYPE FILE_OPEN_STATUS IS (OPEN_OK, STATUS_ERROR,
NAME_ERROR, MODE_ERROR);
PROCEDURE FILE_OPEN(status: OUT FILE_OPEN_STATUS;
FILE f: file_type;
external_name: IN STRING;
open_kind: IN FILE_OPEN_KIND := READ_MODE);
PROCEDURE FILE_CLOSE(FILE f: file_type);
OPEN_OK –успешноеоткрытиефайла
STATUS_ERROR –файловыйобъектоткрытисвязанужесдругимфизическимобъектом
NAME_ERROR -причтении:файластакимименемнесуществует;призаписиили
добавлении:файлстакимименемнесуществуетинеможетбытьсоздан
MODE_ERROR –файлсуществует,нонеможетбытьоткрытвуказываемомрежиме
12. Открытие и закрытие файлов
явным образом
PROCESS IS
CONSTANT MAX_COUNT: NATURAL := 10;
VARIABLE count: INTEGER := 0;
TYPE int_file IS FILE OF INTEGER;
FILE data: int_file;
VARIABLE f_status: FILE_OPEN_STATUS;
BEGIN
FILE_OPEN(f_stat, data, "file.dat", WRITE_MODE);
REPORT "Got status: "&FILE_OPEN_STATUS'image(f_stat);
IF f_stat = OPEN_OK THEN
FOR i IN 1 TO MAX_COUNT LOOP
IF i >= MAX_COUNT THEN
EXIT;
END IF;
WRITE(data, count);
count := count + 2;
END LOOP;
FILE_CLOSE(data);
END IF;
WAIT;
END PROCESS;
13. Пакет TEXTIO. Предпосылки
Рассматриваемые ранее (выше) типы файлов хранят данные
в некотором двоичном представлении
• формат определяется хостовой ОС, а также системой
моделирования (симулятором)
Возникает проблема переносимости файлов между разными
ОС и системами моделирования
Формирование файлов с наборами тестовых воздействий, а
также чтение результатов моделирования требует
дополнительных усилий, с учетом особенностей хранения
двоичных данных
• невозможно представить входные/выходные файлы в
«читабельной» (для человека) форме
Нельзя просто так
взять и просмотреть
двоичный файл
14. Пакет TEXTIO
Предопределенный пакет TEXTIO библиотеки STD
предлагает ряд «полезных» типов данных и операций для
чтения/записи текстовых файлов, т.е. файлов, в которых
данные представлены в текстовом виде:
• стандартные файловые типы
• процедуры для чтения и записи текстового представления
предопределенных типов данных языка VHDL
Читаемые и записываемые текстовые файлы являются ASCII-
файлами
Пакет TEXTIO поддерживается всеми симуляторами
При использовании пакета TEXTIO требуется явное его
включение в проект:
USE std.textio.ALL;
15. Пакет TEXTIO. Составляющие
Операции ввода/вывода, используемые пакетом TEXTIO
основаны на динамических строках, доступ к которым
осуществляется через указатели
Тип TEXT является файловым типом, представляющим файл
из текстовых строк (ASCII-символов) переменной длины
Процедуры чтения/записи файла
TYPE LINE IS ACCESS STRING; -- указатель на строку
TYPE TEXT IS FILE OF STRING;
PROCEDURE READLINE(FILE F: TEXT; L: OUT LINE);
PROCEDURE READ(L: INOUT LINE; value: OUT BIT);
PROCEDURE WRITE(L: INOUT LINE; value: OUT BIT);
PROCEDURE WRITELINE(FILE F: TEXT; L: INOUT LINE);
16. Пакет TEXTIO
Тип LINE выступает в роли «буфера» для операций чтения и записи:
• READ()и WRITE()- получают доступ и работают с этим «буфером»
• READLINE()и WRITELINE()- перемещают содержимое этого
«буфера» в/из файл(а)
Чтение из файла:
1. READLINE()читает целую строку из входного файла, создает
строковый объект в памяти и возвращает на него указатель
2. READ()извлекает из строки значения разных типов (BOOLEAN,
BIT, BIT_VECTOR, INTEGER, REAL, TIME, CHARACTER,
STRING)
Запись в файл:
1. WRITE()преобразует данные в строковое отображение и
возвращает указатель на полученный объект строкового типа
2. WRITELINE()передает указатель на созданный в памяти
строковый объект (если значение указателя NULL, тогда в
выходной файл записывается пустая строка)
17. В пакете TEXTIO процедура
WRITE()перегружена для типов
STRING и BIT_VECTOR , поэтому
необходимо явно указывать тип
передаваемого параметра:
WRITE(L, STRING'("hello"));
WRITE(L, BIT_VECTOR'("010111"));
Пакет TEXTIO
PROCESS IS
VARIABLE count: INTEGER := 0;
VARIABLE buf_in, buf_out: LINE;
FILE infile, outfile: TEXT;
BEGIN
FILE_OPEN(f_stat, outfile, "myfile1.txt", WRITE_MODE);
FILE_OPEN(f_stat, infile, "myfile2.txt", READ_MODE);
READLINE(infile, buf_in);
READ(buf_in, count);
count := count + 1;
WRITE(buf_out, STRING'("New count value is: "));
WRITE(buf_out, count);
WRITELINE(outfile, buf);
FILE_CLOSE(infile);
FILE_CLOSE(outfile);
WAIT;
END PROCESS;
18. TEXTIO: INPUT и OUTPUT
В пакете TEXTIO предопределены два файловых дескриптора:
• INPUT
• OUTPUT
Дескрипторы соответствуют стандартному вводу STD_INPUT
и стандартному выводу STD_OUTPUT хостовой ОС
(клавиатура и консоль VHDL симулятора соответсвенно)
FILE INPUT: TEXT OPEN READ_MODE IS "STD_INPUT";
FILE OUTPUT: TEXT OPEN WRITE_MODE IS "STD_OUTPUT"
19. TEXTIO: INPUT и OUTPUT
PROCESS IS
FILE thefile: TEXT;
VARIABLE buf_out, buf_in: LINE;
VARIABLE fname: STRING(1 TO 10);
VARIABLE f_status: FILE_OPEN_STATUS;
BEGIN
WRITE(buf_out, STRING'("Enter file name:"));
-- OUTPUT – файловый дескриптор стандартного вывода
WRITELINE(OUTPUT, buf_out);
-- INPUT – файловый дескриптор стандартного ввода
READLINE(INPUT, buf_in);
READ(buf_in, fname);
FILE_OPEN(f_status, thefile, fname, READ_MODE);
READLINE(thefile, buf_in);
WRITELINE(OUTPUT, buf_in);
WAIT;
END PROCESS;