gpt4 book ai didi

text - VHDL - 包中的类型声明

转载 作者:行者123 更新时间:2023-12-04 19:36:21 26 4
gpt4 key购买 nike

我正在尝试在 7 段显示器上滚动文本。文本将从键盘输入,我使用 BASYS2 作为 FPGA。我的键盘接口(interface)已经完成,还有我的七段 Controller 。但是我的变速杆模块有问题。当我处理扫描码时,我需要使用一个字节数组。我在一个包中声明了这样的类型,即“mypackage2”。但是,据我所知,shifter 模块无法使用该类型,即“reg_array”。我需要更改什么,或者我在这里缺少什么?由于我是 VHDL 的新手,我可能犯了一些基本错误。此外,我编写的包不会显示在窗口左侧的项目层次结构中。任何帮助表示赞赏。谢谢。

编辑:我注意到我不应该按如下方式使用 reg 数组:Data_out : out reg_array(REGSIZE-1 downto 0),因为它的宽度已经指定。所以我稍微更改了我的代码并将错误数减少到 3。

这是移位器模块:

library IEEE; 
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use work.mypackage2.all;

entity shifter is
generic ( REGSIZE : integer := 16); -- Text will be composed of 16 characters
port(clk : in std_logic;
Scan_Dav : in std_logic; -- this is '1' when there is a new scancode
Data_in : in std_logic_vector(7 downto 0); --scancode from keyboard
Data_out : out reg_array );
end shifter;

architecture bhv of shifter is

signal shift_reg : reg_array;
begin
process (clk, Scan_Dav) begin
if rising_edge(clk) then
if Scan_Dav = '1' then
shift_reg(REGSIZE-1 downto 1) <= shift_reg(REGSIZE-2 downto 0);
shift_reg(15) <= shift_reg(0);
end if;
end if;
Data_out <= shift_reg;
end process;
end bhv;

这是包裹:

library IEEE; 
use IEEE.STD_LOGIC_1164.all;

package mypackage2 is

subtype reg is std_logic_vector(7 downto 0); -- a byte
type reg_array is array (0 to 15) of reg; -- array of bytes

end mypackage2;


package body mypackage2 is

end mypackage2;

这些是最新的错误:

ERROR:HDLParsers:807 - "F:/Projeilk/Shifter.vhd" Line 22. shift_reg can not be used with range downto.
ERROR:HDLParsers:807 - "F:/Projeilk/Shifter.vhd" Line 22. shift_reg can not be used with range downto.

最佳答案

您已经两次定义了字节数组的大小。在包文件中,您已将 reg_array 定义为 16 个 reg 的固定数组。但是在体系结构中,您试图通过使用 (REGSIZE-1 downto 0) 再次定义 reg_array 的大小来指定 shift_reg 的大小> 就好像 reg_array 是一个可变大小的数组。

您可以保留 reg_array 的固定声明并将 shift_reg 定义为:

signal shift_reg : reg_array;

或者保留您对 shift_reg 的定义并将 reg_array 声明为可变宽度数组,例如:

type reg_array is array (natural range <>) of reg; -- variable-length array of bytes 

看起来您的代码中可能还有一些错误,但其中一些错误可能是由这个问题引起的。

关于text - VHDL - 包中的类型声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13827993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com