首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向ucf文件中添加基于整数的vhdl inout信号

如何向ucf文件中添加基于整数的vhdl inout信号
EN

Stack Overflow用户
提问于 2022-05-29 18:34:38
回答 1查看 73关注 0票数 1

我对VHDL非常陌生,我编写了一段应该是16*4 RAM内存的代码,我为它编写了一个VHDL和VHDL测试平台,我试图在它中添加一个用户约束文件(Ucf),一切看起来都很好,除了它给我的pins.Here中的四个错误带来错误是我的代码:

代码语言:javascript
复制
NET "a<0>" LOC = "p51";
NET "a<1>" LOC = "p59";
NET "a<2>" LOC = "p48";
NET "a<3>" LOC = "p55";

NET "a<0>" LOC = "p51";
NET "a<1>" LOC = "p59";
NET "a<2>" LOC = "p48";
NET "a<3>" LOC = "p55";

NET "di<0>" LOC = "p66";
NET "di<1>" LOC = "p56";
NET "di<2>" LOC = "p57";
NET "di<3>" LOC = "p58";

NET "do<0>" LOC = "p78";
NET "do<1>" LOC = "p75";
NET "do<2>" LOC = "p64";
NET "do<3>" LOC = "p74";

VHDL代码:

代码语言:javascript
复制
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.NUMERIC_STD.ALL;

entity memory is
    Port(
        clk: in STD_LOGIC;
        we: in STD_LOGIC;
        a:inout integer RANGE 0 to 3; --read and write address-
        di: in STD_LOGIC_VECTOR(3 downto 0);
        do: out STD_LOGIC_VECTOR(3 downto 0)
    );
end memory;

architecture Behavioral of memory is
    TYPE mem IS ARRAY(0 TO 7) OF std_logic_vector(3 DOWNTO 0);
   SIGNAL ram_block : mem ;
begin
    process(clk)
        begin
            if(clk'event and clk='1') then
                if(we='1') then
                    ram_block(a) <= di;
            
                else
                     do <= ram_block(a);
                 end if;
            end if;
        end process;


end Behavioral;

这些都是我的错误:

错误:约束系统:59-约束“LOC = "p48";>

memoryPin.ucf(3):NET "a<2>“未找到。请核实:

  1. 指定的设计元素实际上存在于原始设计中。指定对象的
  2. 在约束源文件中拼写正确。错误:ConstraintSystem:59-约束“LOC = "p55";> memoryPin.ucf(4):NET "a<3>”未找到。请验证:
  3. 指定的设计元素实际上存在于原始设计中。指定对象的
  4. 在约束源文件中拼写正确。错误:ConstraintSystem:59-约束“LOC = "p48";> memoryPin.ucf(8):NET "a<2>”未找到。请验证:
  5. 指定的设计元素实际上存在于原始设计中。指定对象的
  6. 在约束源文件中拼写正确。错误:ConstraintSystem:59-约束“LOC = "p55";> memoryPin.ucf(9):NET "a<3>”未找到。请验证:
  7. 指定的设计元素实际上存在于原始设计中。指定对象的
  8. 在约束源文件中拼写正确。

我试着从ucf文件中删除整个“a”引脚,但是,正如我说的,我对VHDL并不熟悉,我不太理解ucf文件的概念,我不知道它是否正确工作,如果您能帮忙的话,我会很高兴的。

EN

回答 1

Stack Overflow用户

发布于 2022-05-30 04:30:23

我最好的建议是将vhdl中的顶级信号保持为std_logic和std_logic_vector类型。理论上,整数可以用多种方式编码,因此到物理引脚的映射可能是不同的。例如,整数可以是二进制编码、灰色编码、有符号或无符号,物理引脚对于每种编码都有不同的值。

然而,std_logic_vector只是一组连线,对于每个索引只有一个意义,即on或off。尽管最初的问题是如何向ucf添加一个整数,但我建议将其转换为顶层的std_logic_vector文件,如下所示:

对于输出,您可以:

代码语言:javascript
复制
out <= std_logic_vector(to_unsigned(my_int,my_slv'length))

对于输入,您可以:

代码语言:javascript
复制
my_int <= to_integer(unsigned(a))

还请注意,这是如何强制说明是否信号是无签名或签名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72426320

复制
相关文章

相似问题

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