Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: СППЗУ как ПЛИС
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Иван Ивановс
Здравствуйте. Хочу обратиться к Вам за помощью. У меня есть микросхема памяти тип 27С64 и 27128 (СППЗУ 64Кбит и 128Кбит соответственно) . Но я хочу запрограммировать её не на выполнение какой либо программы, а на выполнение логических операций как ПЛМ или ПЛИС. Если какая ни будь программа которая переведет мне лог. уравнения в код для этих микросхем? Сам я пробовал, но со сложными лог. уравнениями стало довольно трудно искать алгоритм программирования. Заранее благодарен.
Doka
не вижу явных проблем.
по вашим логическим уравнениям составляете на каждую функцию таблицу истинности, размер которой равен 2^(число_переменных)

сама 27C64 имеет организацию 8Кх8, т.о. на ней могуть быть реализованы 8 функций 13 переменных.


ЗЫ: для автоматизации процедуры составления табл.истинности можете загнать сами уравнения в Си-программу (к примеру) и генерить уже оконечный файл прошивки ПЗУ
slog
Excel тебе поможет.
ReAl
Цитата(Иван Ивановс @ Nov 16 2006, 20:39) *
Здравствуйте. Хочу обратиться к Вам за помощью. У меня есть микросхема памяти тип 27С64 и 27128 (СППЗУ 64Кбит и 128Кбит соответственно) . Но я хочу запрограммировать её не на выполнение какой либо программы, а на выполнение логических операций как ПЛМ или ПЛИС. Если какая ни будь программа которая переведет мне лог. уравнения в код для этих микросхем?

Я когда-то делал для 556РТ4 на MACRO-11 и позже для 556RT5 и 573РФ2 на borland tasm.
Писал прямо в нём логические выражения - генерацию байта, после чего rept на размер ПЗУ и в блоке rept addr = addr + 1.
Итого - готовый бинарник для заливки в ПЗУ :-)
Помнится, на tasm-пе пришлось поуродоваться, но вышло. Не уверен, что найду в завалах как я это делал.

Кажется, в каком-то оркаде в PLD-синтезаторе можно было выбрать target=ROM
Koluntaev
Цитата(Иван Ивановс @ Nov 16 2006, 19:39) *
Здравствуйте. Хочу обратиться к Вам за помощью. У меня есть микросхема памяти тип 27С64 и 27128 (СППЗУ 64Кбит и 128Кбит соответственно) . Но я хочу запрограммировать её не на выполнение какой либо программы, а на выполнение логических операций как ПЛМ или ПЛИС. Если какая ни будь программа которая переведет мне лог. уравнения в код для этих микросхем? Сам я пробовал, но со сложными лог. уравнениями стало довольно трудно искать алгоритм программирования. Заранее благодарен.

Так вроде и проблемы особой нет. На любом языке (Pascal, C и т. д.) пишите программку, заводите цикл по адресу от 0 до максимального адреса Вашей ПЗУ. Вычисляете результат по нужному алгоритму с помощью обычных логических или математических операций. Потом результат для каждого входного адреса кладете в выходной файл (8 или 16 бит в зависимости от разрядности данных ПЗУ). Получаете двоичный *.bin файл, который шьете в ПЗУ. Тогда при подаче соответствующего адреса ПЗУ выдаст нужный результат.
Иван Ивановс
Всем Большое Спасибо!
В принципе я догадался и написал прогу на VB создающая Фаил с расширением .rom. Представлены в нем данные десятичного формата.
Пример проги:

« НАЧАЛО
Option Explicit

« Объявление переменных
Dim I As Double, Im As Double, n As Double
Dim D1 As Integer, D2 As Integer, D3 As Integer, D4 As Integer, D5 As Integer, D6 As Integer, D7 As Integer, D0 As Integer
Dim SizeRom As Integer
Dim Files As String
Dim MIDFiles As Double

Dim DataFile(8191) As Integer
Dim A(12) As Boolean



Private Sub Form_Load()

Files = ""
SizeRom = 8191


ProgressBar.Max = SizeRom

For I = 0 To SizeRom
ProgressBar.Value = I
n = 0
Im = I


Do Until Im = 0

A(n) = Im Mod 2

If Int(A(n)) = -1 Then Im = Im - 1

n = n + 1

Im = Im / 2
Loop

D0 = « Здесь должна стоять лог. функция для вывода Д0 * -1

D1 = « Здесь должна стоять лог. функция для вывода Д1 * -2

D2 = « Здесь должна стоять лог. функция для вывода Д2 * -4

D3 = « Здесь должна стоять лог. функция для вывода Д3 * -8

D4 = « Здесь должна стоять лог. функция для вывода Д4 * -16

D5 = « Здесь должна стоять лог. функция для вывода Д5 * -32

D6 = « Здесь должна стоять лог. функция для вывода Д6 * -64

D7 = « Здесь должна стоять лог. функция для вывода Д7 * -128

DataFile(I) = D0 + D1 + D2 + D3 + D4 + D5 + D6 + D7


Next I

For I = 0 To UBound(DataFile)
Files = Files & DataFile(I) & " "
Next I

MIDFiles = Len(Files) - 1

Files = Mid(Files, 1, MIDFiles)

«Открываем диалоговое окно сохранение файла

CommonDialog1.ShowSave

If Trim(CommonDialog1.FileName) = "" Then End

« Записываем результат в фаил
Open CommonDialog1.FileName For Output As #1
Print #1, Files
Close

End « КОНЕЦ
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.