VHDL程序,BCD到7seg的转换器,这段代码会编译吗?

VHDL程序,BCD到7seg的转换器,这段代码会编译吗?,vhdl,fpga,Vhdl,Fpga,由于我无法检查它,我想问一下这段vhdl代码是否可以编译 我在大学里做了一个项目,其中一部分是BCD到七段显示转换器。我需要它有四个输入和四个输出(四位数),但那时我没有太多的语言知识和经验,我在一个架构中使用了四次基本相同的代码 我现在想让它更具可读性和“专业性”,所以我决定使用一个过程,不要重复同一行很多次。但问题是,我并没有可能测试它 我在网上搜索了过程语法,并根据新知识改进了代码。这是它现在的样子 library IEEE; use IEEE.STD_LOGIC_1164.all; us

由于我无法检查它,我想问一下这段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;
IEEE库;
使用IEEE.STD_LOGIC_1164.all;
使用IEEE.std_logic_unsigned.all;
实体BCDto7SEGconverter为
港口(
sec_j:标准逻辑向量(3到0);
sec_d:标准逻辑向量(3到0);
min_j:标准逻辑向量(3到0);
最小值:标准逻辑向量(3到0);
sec_j_7seg:输出标准逻辑向量(6到0);
sec_d_7seg:输出标准逻辑向量(6到0);
min_j_7seg:输出标准逻辑向量(6向下至0);
min_d_7seg:out标准逻辑向量(从6下降到0);
端BCDTO7SEG转换器;
bcdto7SEGconverter的架构转换是
开始
程序变更(
信号r_IN:标准逻辑向量(3到0);
信号输出:输出标准逻辑矢量(3到0)
)是
开始
案例r_iN is

当“0000”=>r_OUT r_OUT r_OUT r_OUT r_OUT r_OUT r_OUT r_OUT r_OUT r_OUT r_OUT r_OUT编号时。程序规范应为块声明项(在重复的架构开始之前-删除第一个
begin
change
过程中
r\u Out
的参数声明应该有一个6到0的约束。这是一个七段显示的顺序。在这两个更改之后,您的代码将进行分析、阐述和修改。)模拟。Matthew Taylor可能会弹出并告诉您在哪里可以找到免费的在线模拟器。您的代码不依赖于包std_logic_unsigned。Syle指南可用于专业外观。有关在线VHDL工具(模拟器和合成工具,以防Matthew没有及时出现).Stackoverflow上有一个标记。感谢@user1155120的更正和链接。我设法解决了问题。不。过程规范应该是块声明项(在重复的架构开始之前-删除第一个
begin
change
过程中
r\u Out
的参数声明应该有一个6到0的约束。这是一个七段显示的顺序。在这两个更改之后,您的代码将进行分析、阐述和修改。)模拟。Matthew Taylor可能会弹出并告诉您在哪里可以找到免费的在线模拟器。您的代码不依赖于包std_logic_unsigned。Syle指南可用于专业外观。有关在线VHDL工具(模拟器和合成工具,以防Matthew没有及时出现).Stackoverflow上有一个标签。谢谢@user1155120的更正和链接。我设法解决了问题。