Перейти к содержанию
    

вопрос по 7 сегментному дисплею

У меня есть .sch которому вводишь 2 2байтовых числа и он выводит ответ на 7 сегментовый дисплей в 16 коде.

то есть при 11*11 он выведет 9(не затрагивая остальные)

но я например хочу сделать что бы он перемножал 2 байтовое с 3 байтовым

и тогда нужно использовать два дисплея (всего их там 4) 8888

Так вот вопрос как мне сказать что вывод этой коробочки в схеме я хочу на один дисплей а другой коробочки на другой дисплей ?

ISE WebPack Spartan3e Bypass2

file.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

очевидно надо указать палочки подключения:). Каждая коробочка имеет свои выходные палочки для соединения. Надо найти специальный файлик и написать какие палочки от какой коробочки на какие светилочки подключить. Файлик ucf завется.

 

Одно меня беспокоит почему 11 * 11 = 9, и кого это девятка не затрагивает, но думаю это тайна мира коробочек.

 

 

короче пины надо назначить в файле пользовательских констрайнов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

очевидно надо указать палочки подключения:). Каждая коробочка имеет свои выходные палочки для соединения. Надо найти специальный файлик и написать какие палочки от какой коробочки на какие светилочки подключить. Файлик ucf завется.

 

Одно меня беспокоит почему 11 * 11 = 9, и кого это девятка не затрагивает, но думаю это тайна мира коробочек.

 

 

короче пины надо назначить в файле пользовательских констрайнов

11*11 в двоичном

ответ в шестнадцетиричном коде

можешь скинуть пример ucf файла?

так как выводы я вывожу на ca cb cc cd и так далее. но как сменить цифру на какую я вывожу я без понятия

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ох ох ох

как вы вообще без констраинов работает? А клок у вас есть? а как вы его подключили?

в файле констраинов пишут типа так

 

NET "clk_pin" LOC = P55;

NET "LED1" LOC = P51;

NET "LED2" LOC = P48;

 

в кавычках это входные - выходные порты модуля верхнего уровня, а с буквой Р это ноги самой плис.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

очевидно надо указать палочки подключения:). Каждая коробочка имеет свои выходные палочки для соединения. Надо найти специальный файлик и написать какие палочки от какой коробочки на какие светилочки подключить. Файлик ucf завется.

 

Одно меня беспокоит почему 11 * 11 = 9, и кого это девятка не затрагивает, но думаю это тайна мира коробочек.

 

 

короче пины надо назначить в файле пользовательских констрайнов

 

 

# PlanAhead Generated physical constraints

 

NET "AN" LOC = E2;

NET "BN" LOC = N3;

NET "CN" LOC = G3;

NET "DN" LOC = F3;

NET "CA" LOC = L14;

NET "CB" LOC = H12;

NET "CC" LOC = N14;

NET "CD" LOC = N11;

NET "CE" LOC = P12;

NET "CF" LOC = L13;

NET "CG" LOC = M12;

NET "DP" LOC = N13;

 

 

bypass.jpg

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ох ох ох

как вы вообще без констраинов работает? А клок у вас есть? а как вы его подключили?

в файле констраинов пишут типа так

 

NET "clk_pin" LOC = P55;

NET "LED1" LOC = P51;

NET "LED2" LOC = P48;

 

в кавычках это входные - выходные порты модуля верхнего уровня, а с буквой Р это ноги самой плис.

вот я скинул вам как я запинил и свой проект

что мне написать что бы плата поняла на какую из 4 цифер я хочу вывести сигнал данной функции ?

 

ох ох ох

как вы вообще без констраинов работает? А клок у вас есть? а как вы его подключили?

в файле констраинов пишут типа так

 

NET "clk_pin" LOC = P55;

NET "LED1" LOC = P51;

NET "LED2" LOC = P48;

 

в кавычках это входные - выходные порты модуля верхнего уровня, а с буквой Р это ноги самой плис.

вот нашел часы

 

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use ieee.std_logic_unsigned.all;

 

entity hodiny is

port(

Clk_50MHz : in std_logic;

Reset : in std_logic;

 

Mux_sel : out std_logic

);

 

end hodiny;

 

architecture Behavioral of hodiny is

 

signal tmp : std_logic_vector(17 downto 0);

 

begin

 

process (Clk_50MHz, Reset)

begin

if (Reset='1') then

tmp <= (others => '0');

elsif rising_edge(Clk_50MHz) then

tmp <= tmp + 1;

end if;

end process;

Mux_sel <= tmp(17);

 

end Behavioral;

 

ну вот скажите пожалуйста у меня есть допустим схема которая в некоторых случаях должна выводить результат на 2 дисплея

что мне написать в распиновке и если нужно где либо еще что бы она выводила на 2 дисплея ?

Изменено пользователем Glement

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ААА... так у вас проблема то в другом. Вы вообще не понимаете как это работает, а не как это подключить:))))

 

видите сигналы с F12, J12, M13, K14? вот именно они отвечают за то какая из ячеек будет гореть.

за один раз вы можете вывести сигнал только на одну ячейку, вернее можно и на несколько, но они будут казать одно и тоже.

Вам надо быстро быстро выбирать ячейку и показывать на ней цифру, потом выключать ее и выбирать другую с другой цифрой.

Глаз инертен и он не увидит что ячейки мигают.

 

Ну как я вижу вашу схему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ААА... так у вас проблема то в другом. Вы вообще не понимаете как это работает, а не как это подключить:))))

 

видите сигналы с F12, J12, M13, K14? вот именно они отвечают за то какая из ячеек будет гореть.

за один раз вы можете вывести сигнал только на одну ячейку, вернее можно и на несколько, но они будут казать одно и тоже.

Вам надо быстро быстро выбирать ячейку и показывать на ней цифру, потом выключать ее и выбирать другую с другой цифрой.

Глаз инертен и он не увидит что ячейки мигают.

 

Ну как я вижу вашу схему.

значит мне нужно написать таймер который будет переключать сигналы ?

то есть например 8 мс горит 1 дисплей

8 мс другой

теперь осталась последняя проблема где это надо написать и как это написать?

 

 

так как я вижу часы. есть файл с сигналами для варианта с 1 дисплеем. а вот где писать код для переключения дисплеев так как я понял что у меня будет в файле 1 функция которая переключает две другие

в двух других условия для рисования числа

но я без понятия как это все реализовать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

О... ну у вас впереди долгий путь если вы задаете такие вопросы.

 

Все что вы сейчас пишите в итоге будет схемой внутри плис. Схема разбивается на части, каждая часть делает свою работу.

Каждая часть схемы - это файл на verilog, VHLD, или графическое представление. Потом должен быть один общий файл который соединяет все части схемы воедино и подключает к ножкам микросхемы.

 

Мне видится что у вас должна быть модуль который принимает на вход 4 числа для отображения и на выходе управляет сигналами выбора экранчика и тем что на экранчик подать. Этот модуль постоянно перебирает экранчики и зажигает данные.

 

Потом вам будут нужны модули формирования входов для этого модуля. Это тоже схемы которые что-то делают, и так далее...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

О... ну у вас впереди долгий путь если вы задаете такие вопросы.

 

Все что вы сейчас пишите в итоге будет схемой внутри плис. Схема разбивается на части, каждая часть делает свою работу.

Каждая часть схемы - это файл на verilog, VHLD, или графическое представление. Потом должен быть один общий файл который соединяет все части схемы воедино и подключает к ножкам микросхемы.

 

Мне видится что у вас должна быть модуль который принимает на вход 4 числа для отображения и на выходе управляет сигналами выбора экранчика и тем что на экранчик подать. Этот модуль постоянно перебирает экранчики и зажигает данные.

 

Потом вам будут нужны модули формирования входов для этого модуля. Это тоже схемы которые что-то делают, и так далее...

я понимаю как это будет выглядеть

я не понимаю как это сделать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я думаю надо смело использовать пункты меню по созданию файлов.

 

В план ахеде есть пункты добавить и создать новый файл для синтеза. Вот надо создать файлы, написать в них текст описания. Потом создать топовый файл в нем все собрать воедино. Добавить констраины, провести симуляцию, синтез и так далее...

 

Не сдавайтесь!

 

Вы на верилоге или VHDL писать умеете, кстати? Или вы хотите схемки руками рисовать?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я думаю надо смело использовать пункты меню по созданию файлов.

 

В план ахеде есть пункты добавить и создать новый файл для синтеза. Вот надо создать файлы, написать в них текст описания. Потом создать топовый файл в нем все собрать воедино. Добавить констраины, провести симуляцию, синтез и так далее...

 

Не сдавайтесь!

 

Вы на верилоге или VHDL писать умеете, кстати? Или вы хотите схемки руками рисовать?

 

пока что все чему нас научили это нарисовать схему. создать схематический символ и так далее

потом присоединить к конекторам и все

 

в данном задании нам дан декодер 7 сегментовый уже готовый. все что там надо было поменять это формулы для каждого из 7 сегментов .

ну и к нему присоединить умножение двух двухбайтовых чисел

 

а вот выводу на разные экраны и замедление часов платы не учили. там написано смотите в мануале что да как. но весь мануал сводится к описанию дисплея что никоим образом не помогает написать vhdl файл который будет выводить результат умножения на два дисплея

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну тогда конец... это интеграл брать надо:)

 

Даже не знаю что вам посоветовать, разве что найти кого-то кто сможет вам реально показать как это делается. Описать настолько издалека очень трудно.

 

Вам надо понять путь который проходят сигналы от ножек ПЛИС до вашего модуля и обратно. Скорее всего вам уже дан модуль верхнего уровня в графическом виде, входы выходы подключены к ногам ПЛИС и работать вам скорее всего надо именно в нем. Я предполагаю, как там реально мне не ведомо.

 

Если все так, то надо считать что все соединено правильно и обращаться к правильным ногам этого графического уровня, найти тактовый сигнал, найти выключатели 7 сегментного индикатора и так далее... есть контакты AN0, AN1, AN2, AN3? Какой нибудь контакт с именем CLK?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Могу посоветовать для решения задачи о выводе на несколько индикаторов прочитать про динамическую индикацию. Вот тут очень хорошая .gif картинка, где очень понятно показан принцип работы динамической индикации : http://radioparty.ru/prog-avr/program-c/27...11-sevensegment

Хотелось бы увидеть полное описание, поставленной перед Вами задачи.

Прочитав тему, я вроде-бы понял поставленную задачу : требуется перемножить 2 числа : двухбайтовое с трехбайтовым.

Вот только изначально есть один непонятный мне момент.

Для полноценного отображения одного двухбайтового числа требуется 4 семисегментых индикатора, где каждый индикатор может отобразить числа от 0 до F в шестнадцатиричном коде. Т.е для двухбайтового числа, например b"1111_1111_1111_1111" требуется 4 индикатора, на которых будет гореть X"FFFF" (числа пишу как в языке VHDL)

Результат умножения двух двухбайтовых чисел потребует максимум 8 индикаторов (b"1111_1111_1111_1111" • b"1111_1111_1111_1111" = X"FFFE_0001").

Результат умножения двухбайтового числа с трехбайтовым потребует уже 10 индикаторов (X"FFFE_FF0001)".

Если судить по схеме, выложенной автором, плата имеет только 4 индикатора. Отсюда закономерный вопрос. Где ещё 6 индикаторов для выполнения требований поставленной задачи ?

Или же автор ошибся перепутав бит с байтом ? Из объяснения автора я так и не понял, плата имеет 4 семисегментных модуля, каждый из которых состоит из 4 индикаторов (т.е всего 16 индикаторов) или же всего 1 семисегментный модуль, который содержит всего 4 индикатора ?

Есть очень хорошее выражение, смысл которого всё больше и больше приобретает смысл по мере набора опыта. Без внятного ТЗ — результат ХЗ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пока что все чему нас научили это нарисовать схему. создать схематический символ и так далее

потом присоединить к конекторам и все

 

в данном задании нам дан декодер 7 сегментовый уже готовый. все что там надо было поменять это формулы для каждого из 7 сегментов .

ну и к нему присоединить умножение двух двухбайтовых чисел

 

а вот выводу на разные экраны и замедление часов платы не учили. там написано смотите в мануале что да как. но весь мануал сводится к описанию дисплея что никоим образом не помогает написать vhdl файл который будет выводить результат умножения на два дисплея

А что на самом деле Вы хотите?

Спихниуть лабораторку или научиться работать с ПЛИС? Только правду! Вот если второе, то могу рассказать как...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...