Чт май 03, 2012 23:50:42
Пт май 04, 2012 00:23:17
Пт май 04, 2012 06:45:13
Пт май 04, 2012 07:19:10
3kivan писал(а):...должны увидеть значения на семисегменте микросхемы SPARTAN 3E..
Пт май 04, 2012 13:32:17
SubDia писал(а):Вы, пожалуйста, ТЗ-то подкорректируйте. Вам на VHDL или на Verilog?
Нужно вывести на семисегментник какие-то числа, так получается?
Пт май 04, 2012 14:00:02
3kivan писал(а):давайте VHDL
Пт май 04, 2012 16:11:33
Пт май 04, 2012 16:31:38
Пт май 04, 2012 23:50:48
Сб май 05, 2012 08:45:37
Сб май 05, 2012 11:38:40
платка напоминает Agilent BASYS2.
Сб май 05, 2012 12:20:35
Вс май 06, 2012 01:01:08
Вс май 06, 2012 06:55:13
Чт май 10, 2012 18:40:25
uldemir писал(а):Для тех кто в танке, повторяю - на Spartanе. - ой не удержался.
если на VHDL, то можете почитать мой проект http://haos.homeip.net/clock9572/index.html . Практически вам нужен самый первый модуль bin2seg - преобразует двоичный код в семисегментный.
Чт май 10, 2012 19:05:18
Ср май 16, 2012 17:52:16
uldemir писал(а):Не понял, что вы хотите. Схема как таковая не составляется. Модуль описывается, скажем, поведенческой моделью, а дальше уже работа САПРа из доступных в заданном кристалле элементов соорудить необходимое. При желании, можно у САПРа попросить вывести RTL schematic, но это довольно далеко от вменяемого для человека представления.
А по поводу проекта там есть только преобразование двоичного в семисегментный. Конечно, он также попадает под определение преобразователя бинарно-кодированного-десятичного в семисегментный, но это частности.
Ср май 16, 2012 18:33:40
Ср май 16, 2012 18:39:16
uldemir писал(а):
- Код:
000000cccc - единицы
00000bbbb0 - десятки * 2
000bbbb000 - десятки * 8 т.е. b*2+b*8=b*10 - правильно?
0000aaaa00 - cотни * 4
0aaaa00000 - сотни * 32
aaaa000000 - сотни * 64 a*64+a*32+a*4=a*100.
И всё это суммируется. Ну, если по-тупому, то это будет выглядеть примерно так. на синтаксис и грамматику синтезируемость не проверял.Возможно, спартан сьел бы и просто a(3 downto 0)*100+b(3 downto 0)*10+c(3 downto 0);, там же есть аппаратный умножитель. Но мне сейчас негде проверить, а сам я в такой сложной арифметике еще не силён - могу напутаться с типами данных.
- Код:
Entity bcd2bin is
Port ( a : in std_logic_vector (3 downto 0);
b : in std_logic_vector (3 downto 0);
c : in std_logic_vector (3 downto 0);
result : out std_logic_vector (9 downto 0));
architecture behavioral of bcd2bin is
signal sum1 : std_logic_vector (9 downto 0);
signal sum2 : std_logic_vector (9 downto 0);
signal sum3 : std_logic_vector (9 downto 0);
signal sum4 : std_logic_vector (9 downto 0);
signal sum5 : std_logic_vector (9 downto 0);
signal sum6 : std_logic_vector (9 downto 0);
begin
sum1 (9 downto 0) <= "00000" & c (3 downto 0);
sum2 (9 downto 0) <= "0000" & b (3 downto 0) & '0';
sum3 (9 downto 0) <= "000" & b (3 downto 0) & "000";
sum4 (9 downto 0) <= "0000" & a (3 downto 0) & "00";
sum5 (9 downto 0) <= '0' & a(3 downto 0) & "00000";
sum6 (9 downto 0) <= a(3 downto 0) & "000000";
result <= sum1 + sum2 + sum3 + sum4 +sum5 +sum6;
end behavioral;
Ср май 16, 2012 20:52:23
uldemir писал(а):
- Код:
000000cccc - единицы
00000bbbb0 - десятки * 2
000bbbb000 - десятки * 8 т.е. b*2+b*8=b*10 - правильно?
0000aaaa00 - cотни * 4
0aaaa00000 - сотни * 32
aaaa000000 - сотни * 64 a*64+a*32+a*4=a*100.
И всё это суммируется. Ну, если по-тупому, то это будет выглядеть примерно так. на синтаксис и грамматику синтезируемость не проверял.Возможно, спартан сьел бы и просто a(3 downto 0)*100+b(3 downto 0)*10+c(3 downto 0);, там же есть аппаратный умножитель. Но мне сейчас негде проверить, а сам я в такой сложной арифметике еще не силён - могу напутаться с типами данных.
- Код:
Entity bcd2bin is
Port ( a : in std_logic_vector (3 downto 0);
b : in std_logic_vector (3 downto 0);
c : in std_logic_vector (3 downto 0);
result : out std_logic_vector (9 downto 0));
architecture behavioral of bcd2bin is
signal sum1 : std_logic_vector (9 downto 0);
signal sum2 : std_logic_vector (9 downto 0);
signal sum3 : std_logic_vector (9 downto 0);
signal sum4 : std_logic_vector (9 downto 0);
signal sum5 : std_logic_vector (9 downto 0);
signal sum6 : std_logic_vector (9 downto 0);
begin
sum1 (9 downto 0) <= "00000" & c (3 downto 0);
sum2 (9 downto 0) <= "0000" & b (3 downto 0) & '0';
sum3 (9 downto 0) <= "000" & b (3 downto 0) & "000";
sum4 (9 downto 0) <= "0000" & a (3 downto 0) & "00";
sum5 (9 downto 0) <= '0' & a(3 downto 0) & "00000";
sum6 (9 downto 0) <= a(3 downto 0) & "000000";
result <= sum1 + sum2 + sum3 + sum4 +sum5 +sum6;
end behavioral;