Я пытаюсь объединить два кода вместе. Один код с использованием выходов предыдущего и преобразование их в стандартный логический вектор.
Я пытался использовать функцию процесса, но она не удалась
Это коды
Этот код предназначен для разделения выходной частоты на 3 разные цифры для 3 семисегментного дисплея
...
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity dividerr is
generic (
divide_ratio:integer:=1000;
inc :integer:=256);
port (
clckin : in integer range 0 to 256000;
x,y,z : out integer range 0 to 10);
end dividerr;
architecture divider of dividerr is
begin
dividing: process (clckin)
variable div : integer range 0 to divide_ratio;
variable I : integer range 0 to inc;
begin
if clckin >= 100000 then
div := divide_ratio;
I := clckin/div;
x <= I/100;
y <= (I rem 100)/10;
z <= I rem 10;
elsif clckin >= 10000 or clckin < 100000 then
div := divide_ratio;
I := clckin/div;
x <= 0;
y <= I/10;
Z <= I rem 10;
elsif clckin >= 1000 or clckin < 10000 then
div := divide_ratio;
I := clckin/div;
x <= 0;
y <= 0;
z <= I;
elsif clckin >= 500 or clckin < 1000 then
div := divide_ratio;
I := clckin/div;
x <= 0;
y <= 0;
z <= I * 10;
else I := 0;
end if;
end process dividing;
end divider;
....
Этот код предназначен для преобразования цифр в двоичный код, а затем я снова преобразовываю их в bcd и отображаю их на семи сегментных дисплеях на плате de2.
...
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity converter is
port (
x : in integer range 0 to 3;
y,z : in integer range 0 to 9;
xout, yout, zout : out std_logic_vector (7 downto 0));
end converter;
architecture module of converter is
begin
xout <= std_logic_vector(to_unsigned(x, xout'length));
yout <= std_logic_vector(to_unsigned(y, yout'length));
zout <= std_logic_vector(to_unsigned(z, zout'length));
end module;
Любая помощь будет принята с благодарностью.