首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想在开始之前将向量转换为整数。

我想在开始之前将向量转换为整数。
EN

Stack Overflow用户
提问于 2015-10-25 12:54:00
回答 1查看 45关注 0票数 0

这是我的up_down_counter代码,注释是荷兰语,但没那么重要。

代码语言:javascript
复制
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity up_down_teller is
    port ( maxc_vector    :    in std_logic_vector(6 downto 0);  -- "maximum count" : maximale telwaarde (decimaal)   = aantal posities - 1
           minc_vector    :    in std_logic_vector(6 downto 0);
           enable         :    in  std_logic;
           up_down        :    in  std_logic;                    -- telrichting
           clk_500ms      :    in  std_logic;                    -- systeemklok
           bcd            :    out std_logic_vector(7 downto 0); -- tellerstand
           tc             :    out std_logic                     -- tc geeft aan wanneer de maximum telwaarde bereikt is (voor cascade)
         );                                                       
end up_down_teller;

    architecture Behavioral of up_down_teller is
    signal maxc_int : integer range 0 to 99;
    signal minc_int : integer range 0 to 99;

    maxc_int <= to_integer(signed(maxc_vector));
    minc_int <= to_integer(signed(minc_vector));

    -- berekening maximumwaarden voor eenheden (Emax) en tientallen (Tmaxà    
    constant Emax             :     integer     := maxc_int mod 10;            -- rest na deling mc door 10 levert maximumwaarde voor eenheden                 
    constant Tmax             :     integer     := (maxc_int - Emax)/10;    -- mc verminderd met Emax levert veelvoud van 10. Delen door 10 levert het     maximumcijfer voor de tientallen.    

    -- berekening minimumwaarden voor eenheden (Emin) en tientallen (Tmin)
    constant Emin             :     integer     := minc_int mod 10;            -- rest na deling mc door 10 levert minimumwaarde voor eenheden                 
    constant Tmin             :     integer     := (minc_int - Emin)/10;    -- minc_int verminderd met Emin levert veelvoud van 10. Delen door 10 levert het     minimumcijfer voor de tientallen.    

    -- declaratie interne signalen
    signal sEcnt_i         :     integer range 0 to 9;                        -- declaratie een terugleesbaar signaal voor het tellen van de eenheden
    signal sTcnt_i         :     integer range 0 to 9;                        -- declaratie een terugleesbaar signaal voor het tellen van de tientallen

BEGIN
tellerproces : process (clk_500ms)
.
.
.
What follows is less important.

当我运行这段代码时,它会生成一个错误,因为我不能在“开始”之前转换类型,但是我必须这样做,所以我可以为min和max值进行计算,有什么解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-25 13:27:47

为此,必须将maxc_intminc_int定义为泛型或常量。如果将它们作为信号,它们可以在运行时更改,而不能在运行时更改信号的大小。

具有泛型的实体可能如下所示:

代码语言:javascript
复制
entity up_down_teller is
    generic(
           maxc_vector    :    integer range 0 to 99 := 10;
           minc_vector    :    integer range 0 to 99 := 10
    );
    port ( enable         :    in  std_logic;
           up_down        :    in  std_logic;                    -- telrichting
           clk_500ms      :    in  std_logic;                    -- systeemklok
           bcd            :    out std_logic_vector(7 downto 0); -- tellerstand
           tc             :    out std_logic                     -- tc geeft aan wanneer de maximum telwaarde bereikt is (voor cascade)
         );                                                       
end up_down_teller;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33329920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档