Процедуры VHDL, конвертер BCD в 7seg, этот код будет компилироваться? - PullRequest
1 голос
/ 31 марта 2019

Так как у меня нет возможности проверить это, я хотел бы спросить, компилируется ли этот фрагмент кода VHDL.

Я сделал проект в своем университете, и часть его была BCD к семисегментному дисплеюконвертер.Мне нужно было иметь четыре входа и четыре выхода (четыре цифры), но тогда у меня не было большого знания языка или опыта, и я в основном использовал один и тот же кусок кода четыре раза в одной архитектуре.

Я сейчасхочу сделать его более читабельным и «профессиональным», поэтому я решил использовать процедуру, чтобы не повторять одни и те же строки много раз.Проблема, однако, заключается в том, что у меня нет возможности проверить его.

Я искал в Интернете синтаксис процедуры и улучшил свой код на основе новых знаний.Вот как это выглядит сейчас.

library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.std_logic_unsigned.all;

entity BCDto7SEGconverter is
port(
sec_j: in std_logic_vector( 3 downto 0 );
sec_d: in std_logic_vector( 3 downto 0 );
min_j: in std_logic_vector( 3 downto 0 );
min_d: in std_logic_vector( 3 downto 0 );
sec_j_7seg: out std_logic_vector( 6 downto 0 );
sec_d_7seg: out std_logic_vector( 6 downto 0 );
min_j_7seg: out std_logic_vector( 6 downto 0 );
min_d_7seg: out std_logic_vector( 6 downto 0 ) );
end BCDto7SEGconverter;

architecture convert of bcdto7SEGconverter is
begin

procedure change(
    signal r_IN  : in  std_logic_vector( 3 downto 0 );
    signal r_OUT : out std_logic_vector( 3 downto 0 )
    ) is
begin
    case r_iN is
        when "0000" => r_OUT <= "1000000";
        when "0001" => r_OUT <= "1111001";
        when "0010" => r_OUT <= "0100100";
        when "0011" => r_OUT <= "0110000";
        when "0100" => r_OUT <= "0011001";
        when "0101" => r_OUT <= "0010010";
        when "0110" => r_OUT <= "0000010";
        when "0111" => r_OUT <= "1111000";
        when "1000" => r_OUT <= "0000000";
        when "1001" => r_OUT <= "0010000";
        when others => r_OUT <= "1111111";
    end case;
end procedure;

begin

process( sec_j, sec_d, min_j, min_d )
begin
    change(sec_j,sec_j_7seg);
    change(sec_d,sec_d_7seg);
    change(min_j,min_j_7seg);
    change(min_d,min_d_7seg);
end process;
end convert;

Я не могу скомпилировать это сам, поэтому я хотел бы знать, компилируется ли этот код или нет.

...