学习VHDL的最佳方法?

我想学习VHDL,但我真的不知道从哪里开始 我想要一些关于我需要开始使用的软件的建议和解释 我还想获得一些参考资料,以便在不浪费时间的情况下通过互联网搜索有效地学习,因为有很多电子书和教程,我真的不知道该选择哪一本。第一部分的网页(更具体地说,是课程文献、工具和链接部分)包含一个很好的阅读材料和工具列表。本课程不提供任何VHDL介绍,但对没有VHDL经验的学生开放,因此,使用所提供的材料自学效果非常好。(至少对我来说是这样的;YMMV。)我建议,你在数字设计方面有很好的背景。如果没有,从任何版本

在VHDL中定义Matrix2D的初始值

在VHDL中,给matrix2D的信号类型赋予初始值零有一个问题。我将其定义如下: type matrix2D is array (integer range <> , integer range <> ) of signed(2 downto 0); 但不幸的是,它不起作用 有人知道我如何定义矩阵2d的初始值零吗?我的状态副本第86页 我们还可以使用聚合来写入多维数组值。在本例中,我们将数组视为数组数组,首先为每个最左侧的索引值编写数组聚合 这就是您的示例所需要的:

VHDL结构与行为

对于那些对VHDL有很好理解的人来说,这是一个问题。我是个新手,但到目前为止,我一直在使用行为描述生成VHDL。对我来说,它更容易思考,因为它类似于编写软件。我知道一个可能的缺点是行为“执行”顺序,而结构在设计组件/过程中并发执行 所以我很好奇,如果我有一个使用进程的架构,比如说一个8位移位寄存器(SISO),我想创建4个实例(4x8位移位寄存器),我会创建一个组件和4个进程实例吗 或者我会生成4个进程(彼此并行执行),然后用不同的名称调用每个进程 另外,这只是一个一般性的问题,以获得人们在那里

用BRAM VHDL读写二维数组

我想对一个长度为16、有8位数字的数组进行排序。我用过bubblesort,效果很好。 现在我想从BRAM读取输入数组,并将排序后的输出写入BRAM。我在测试台上使用了单端口RAM,下面是它的外观 library IEEE; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity testbench is end testbench; archi

Vhdl 定义;“枚举”-类型依赖于泛型

我正在编写一个状态机,它有一个泛型参数,一些状态的存在依赖于此。由于我在类似枚举的东西中定义了我的状态(不知道它的vhdl术语),我想知道是否可以根据泛型定义这个枚举,有点像这样: generic(x: bool); -- in the entity .... architecture ... if x then generate type states_t is (State1, State2, State3ifX) else type st

关于if语句语法的VHDL错误10500

我是vhdl新手,我有简单的代码来模拟slt操作;但是,我得到以下错误: 错误(10500):文本“if”附近SetLessThan.vhd(14)处的VHDL语法错误;应为“end”或“(”或标识符(“if”是保留关键字)或并发语句 有人能帮忙吗?(代码粘贴在下面) 我试着把()放在a

Vhdl 最后产出司

计数器计数输入样本数。然后计数器输出(n),我想检查样本数是否为偶数,然后n_of_samples=(n*n),否则如果为奇数,则为((n*n)-1) 会是那样的吗 signal dis : integer range 0 to 255 := 0; signal n : integer range 0 to 255 :=0; if n mod 2=1 then n_of samples<= ((n*n)-1); else n_of_samples <

Vhdl 敏感度列表与流程声明关联的必要性是什么?您可以声明一个没有敏感度列表的时钟进程吗?

敏感度列表与流程声明关联的必要性是什么?你能申报吗 没有敏感度列表的时钟进程?带有敏感度列表的进程是一种方便的特例 首先,只有没有wait语句的进程才能有敏感度列表。其次,这样一个进程相当于一个没有敏感度列表的进程,最后一个语句是一个额外的wait语句。wait语句指定了等效的灵敏度 因此,理论上,具有灵敏度列表的过程是可选的。然而,在实践中,它所涵盖的建模案例非常常见。为清晰起见,尽可能使用敏感度列表是更好的建模选项。敏感度列表需要与流程声明关联什么? 有一些信息描述并发语句和进程之间的关系;

Vhdl 信号led无法合成,同步描述不好?

我已经创建了一个分频器,我想用FPGA板测试它。为了测试它,我想让led在开关打开的情况下以分频闪烁。问题是,如果时钟不在上升沿,我不知道如何更改led的值 下面是我得到的确切错误: 第51行:信号led无法合成,同步描述不良。当前软件版本不支持用于描述同步元素(寄存器、内存等)的描述样式。 --> IEEE库; 使用IEEE.STD_LOGIC_1164.ALL; 使用IEEE.STD_LOGIC_ARITH.ALL; 使用IEEE.STD_LOGIC_UNSIGNED.ALL; 实体divi

Vhdl lfsr随机序列生成的fpga实现

我正在使用lfsr生成随机序列。我想在fpga板上显示输出序列。因此,我应该使用.ucf文件将我的I/O映射到板上的实际管脚。这足以在板上显示我的o/p吗?或者我还需要做更多的工作吗?我喜欢用示波器显示o/p序列。如果没有更多的上下文,我想这个问题是无法回答的。如何显示序列符合您的要求。你是想证明这个序列是伪随机的,还是你必须证明什么,只是为了展示,还是你需要其他东西的输出,…我想在另一个程序中使用这个序列,但在此之前,我想证明,不同的输入种子会产生不同的序列。

当成功完成任务需要另一个VHDL文件时,如何在Altera ModelSim中模拟VHDL文件?

第一个VHDL用于使26个LED从0旋转到26。为此,需要10 hz和1 hz的时钟信号。唯一可用的时钟是50Mhz。第二个VHDL文件是将可用信号降低到1和10hz。我使用一个.do文件来运行模拟以生成波形。50MHz时钟显示良好,但1hz和10hz均为平线。这两个需要第二个VHDL文件。由于ModelSIm只允许每个模拟选择1个VHDL文件,因此是否需要在模拟中同时包含这两个文件才能执行此操作 简言之,一个文件包含大部分旋转led代码,另一个文件本质上是一个头文件,用于完成主文件所需的任务。

Vhdl Xilinx/ISim似乎声称其值为X,但它已被声明

我刚刚开始学习如何使用这个工具,所以如果我的问题看起来很愚蠢,我会提前道歉。我已经在许多论坛上搜索了这个错误(已经回复了帖子,不是我的),无法理解我做错了什么,所以这里是我的问题: 我的行为准则: ----------------------------------------------------------------------------- ----- -- Company: -- Engineer: -- -- Create Date: 01:47:22 07/07

Vhdl Modelsim在调试模式下更改变量的显示值基数

当我在变量上运行游标时,是否可以更改显示值的基数 因此,如果在调试模式下将鼠标悬停在变量上(因为已达到断点),则二进制基数对我来说没有用处。是否有办法更改此基数?打开Modelsim图形界面后,您可以按照以下步骤更改基数: 选择模拟>运行时选项 在默认基数框中,选择所需的基数 希望这对您有所帮助。如果您想永久设置它,请在modelsim安装文件夹中打开modelsim.ini(有时,您可能需要更改此文件的权限-默认为只读),导航到 默认基数=符号 并将其更改为 默认基数=十六进制 Default

Vhdl ALU设计误差

我想用VHDL设计一个8位alu,但我得到了这个错误,我认为这与我的输入被声明为位向量有关。这是真的吗 ** Error: C:/Programs/Modeltech_pe_edu_10.4a/examples/alu.vhdl(19): No feasible entries for infix operator "+". ** Error: C:/Programs/Modeltech_pe_edu_10.4a/examples/alu.vhdl(19): Type error resolvi

VHDL:;其他人喜欢;std_逻辑信号的命令

我想写一个代码,其中我的W_EN(std_logic)信号在需要时设置为一(如果满足某些条件),否则(如果没有不同的指定)为零。如果W_EN是标准逻辑向量,我可以用“其他”语句这样做(在示例代码中,“W_EN”称为“one_If_one”): 信号cnt:无符号(1到0)--在每个clk_循环中递增 信号一如果一:标准逻辑; 工艺(cnt) 开始 一个“如果”一个“0”); 如果(cnt=“01”),则 一个如果一个你不需要在这里做任何特别的事情。如果一个信号在一个特定的过程中被多次赋值,最后一

VHDL警告:(vcom-1263)配置规范;全部:bcd“;不适用于任何组件实例化语句

这个问题困扰了我一段时间。如果有人能帮助我,我将不胜感激。已经反复阅读了大部分代码,但没有任何解决方案。有多套代码在使用中;此bcd计数器将在我的项目的其余部分中进一步使用。我在下面添加了必要的代码: 1位BCD计数器: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.NUMERIC_STD.ALL; USE WORK.mypackage_p.ALL; ENTITY bcd_e IS POR

Vhdl Modelsim“;未能映射库“;错误

我已经写了这个简单的代码。但当我尝试使用Modelsim模拟它时,它显示了一个错误,表示库无法映射。我该怎么分类呢 library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity p1 is Port ( a : in STD_LOGIC; b : in STD_LOGIC; c : out STD_LOGIC); end p1; architecture Behavioral of p1 is

Vhdl (实体程序的架构pcarch_计数器):错误:类型不匹配

我在网上找到了一个简单处理器的以下代码。我正在尝试使用仓鼠在VHDL AMS中添加一些模拟组件。但它产生了一个错误:类型不匹配 library IEEE; use IEEE.std_logic_1164.all; use ieee.numeric_std.all; entity program_counter is port ( clk, en_A, ld, inc, reset: in STD_LOGIC; aBus: out STD_LOGIC_VECTOR(15 downt

VHDL-“;信号无法合成,同步描述不良”;

我在Xillinx中合成此代码时出错。此错误是: 无法合成信号Z_1,同步描述错误 实体uk3为 港口( rst:以位表示; C:整数; 时钟:以位为单位; S:输出整数 ); 结束uk3; --}}自动维护区段的结束 uk3的架构uk3是 开始 过程(C、clk、rst) 变量Z_1:整数:=0; 开始 如果rst='1',则Z_1:=0; elsif rst='0'和clk'事件以及clk='1'和C=1 然后 Z_1:=Z_1+1; elsif rst='0'和clk'事件以及clk='1

Vhdl 奇异符号比较结果

当比较2比特std_逻辑_向量与std_逻辑_签名加载到十六进制常量(如x“3”)的包时,我遇到了意外的比较结果。当两个位都设置好时,我希望比较结果为真,但它总是假的。可能是因为std_logic_vector将符号扩展到4位,以便与4位十六进制常量进行比较。然而,真正奇怪的是,当使用常量3时,比较工作与预期一样,但仅当使用std\u logic\u vector时,而不是使用带符号的类型时。请参见下面的示例代码。除第一个断言外,所有断言均失败。为什么这个断言会成功?另外,当未加载std_log

Vhdl 当'=';或'<=';习惯于

我正在学习VHDL,从昨天起我就一直在努力学习下面这个简单的例子 在VHDL中为零(0)到九(9)计数器写入一个实体,该计数器由正边缘时钟触发,并具有异步活动高电平“归零”输入。系统有三(3)个输出信号“低”、“中”和“高”,产生以下值: 假设所有信号均为Std_逻辑类型 代码是这样的 LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.all; USE ieee.std_logic_unsigned.all;

Vhdl 如何进行8位堆栈?

我已经有了一个4位堆栈,但我不知道如何使它成为8位堆栈。这是一个更大项目的一部分,我正在fpga上制作一个“苏打机模拟器”(BASYS2,ISE网页包)。到目前为止,情况是这样的: 实现堆栈的模块: ieee库; 使用ieee.std_logic_1164.all; 使用ieee.std_logic_arith.all; 实体堆栈是 港口 ( A:标准逻辑向量(3到0); S_辅助:标准逻辑向量中(1到0); Q_aux:in标准逻辑向量(3到0); clk_2:标准逻辑中; clr_2:标准_

带for循环的VHDL断言测试台

我有一个VHDL问题:作为家庭作业,我们必须为VHDL设计的电路编写一个带有assert的测试台。我们应该测试每一个位比较器的信号组合。我想用for循环来解决这个问题,如下所示: architecture ts of testbench is signal a: std_logic_vector(3 downto 0) := "0000"; signal b: std_logic_vector(3 downto 0) := "1011"; signal c1, c0: std_logic :=

基于Quartus-Prime和Modelsim的CPLD的VHDL时序仿真

我正在为开发板上用于测试的Intel Max II CPLD开发设计(VHDL)。稍后,它很可能会被Coolrunner II CPLD取代 我对这个很陌生。 使用Quartus Prime Lite和Modelsim进行的基本编译和模拟效果良好。我当前的设计如下所示: -- The top level entity used for synthesis. entity foo is port(...) end foo; architecture rtl of foo is ... b

Vhdl Altera Qsys和带有std_逻辑_向量数组的顶级实体

我一直在尝试在单独的“mytypes.vhd”文件中声明我的类型,如下所示: library ieee; use ieee.std_logic_1164.all; package mytypes is type my_bus_array_type is array (0 to 3) of std_logic_vector(7 downto 0); end package mytypes; library ieee; use ieee.std_logic_1164.all; libr

Vhdl 标量与向量的乘积

我正在用VHDL编写代码,其中一个数字乘以一个向量。但它给出了一个错误 Library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; entity multi is port ( clk : in std_logic; ipixel : in std_logic_vector(15 downto 0); opixel : out std_logic_vecto

使用结构vhdl的NAND基本单元

我在用VHDL设计内存电路时遇到问题。我试图找出以下提示的解决方案: 使用结构化VHDL方法在Xilinx工具中创建NAND基本单元。向两个与非门添加1ns门延迟(用于上升和下降转换)。适当标记输入S和R以及输出Q和QN。创建一个VHDL测试台来模拟电路,按照以下规定驱动输入 在模拟开始时取消断言两个输入。在100纳秒时,资产S.在200纳秒时,取消断言S.在300纳秒时,断言R.在400纳秒时,取消断言R.在500纳秒时,断言两个输入。在600ns时,取消断言两个输入。在700ns时,断言两个

大量VHDL信号分配。。。这个可以压缩吗?

在一个体系结构中,我有大量遵循特定公式的并发信号分配,在本例中: x(i) <= x(i-1) XOR x(i-4) XOR ROTATE_LEFT(x(i-8), 2) x(i)(其他=>0'); 开始 为此,sigArray(8)VHDL具有带循环(for)的generate构造,因此您可以将代码编写为: x_gen : for i in 8 to 127 generate x(i) <= x(i-1) XOR x(i-4) XOR ROTATE_LEFT(sigArray

Vhdl 将偶数奇偶校验位和2个停止位添加到8位std_逻辑_向量

代码如下:在这种情况下,奇偶校验位的计算没有完成。奇偶校验位可以使用for循环计算,但是在这种情况下,是否有其他短的或更好的方法来计算偶数奇偶校验位。 考虑到制作阵列后,我希望逐位访问8位8信号的阵列,逐位发送uart_tx端口中的数据,是否有可能使用阵列而不是8 TxDataReg std_logic_vector library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; use IEEE.STD_L

Vhdl 如何使用右换档杆实现左换档杆?

我使用5级多路复用器(Shift1/2/4/8/16)实现了一个右移位器(32位)。我的问题是如何扩展我的实现,以使用最少的额外硬件实现左移位器?可以通过反转参数向量、向右移位,然后反转结果,使用向右移位来实现左移位,因此: shift_left(arg, n) = reverse(shift_right(reverse(arg), n)) 可以在中找到std\u logic\u vector的反转函数。这似乎是一个硬件问题。@IsThatSo VHDL是一种硬件描述语言。你可以推断其中有硬件

VHDL模拟失败,结果意外

5年前我学习了VHDL,此后我就再也没有使用过,因为我在不同的领域工作。现在我在一个项目中工作,这个项目需要一些VHDL语言的工作。我必须实现SPI来编程ADF4158设备。我打开一本语法书,试着编写程序。我需要开发下面的模块,我按照我的理解编写代码,还有一个测试台,但它在模拟中无法像我需要的那样工作。下面是我想开发的模块和总体框图 过程和vhdl模块框图(可点击): 以下是SPI时序图,如下所示(可单击): 下面是我为实现上述SPI通信而编写的VHDL代码: library IEEE; u

Vhdl 代码合成失败,没有严重警告或错误?

如果我注释掉第二个进程块,我下面的vhdl模块将进行合成,但是如果我尝试同时使用这两个模块,合成将失败,并且没有列出任何严重警告或错误。 有一些警告,但它们只是普通的东西(Zynq没有连接以太网,没有使用的东西,等等) 我看不出有任何理由会发生这种情况。最初,我在导致错误的process语句中有一个for循环,但是去掉它并不起作用。 然后我认为这可能是两个进程之间的多驱动网络,但事实也并非如此 library IEEE; use IEEE.STD_LOGIC_1164.ALL; --use IE

VHDL中输入向量的实际长度

我正在运行一个用VHDL编写的HDL代码,我有一个最大长度为512位的输入向量。我的一些输入小于最大大小。所以我想知道是否有一种方法可以找到每个输入的实际长度,以便在输入向量的最高有效位切割不需要的零。有没有任何可能的方法来做这种事情?我想您正在寻找一种明确的数据填充方法。我建议您采用ISO/IEC 9797-1填充方法2,如下所示: 对于每个输入数据(即使它已经有512位),您添加一个前导“1”位。然后添加前导“0”位(可能没有)以填充向量 要实现此方案,您必须将输入向量放大到513位(因为您

使用VHDL移位运算符左移位寄存器:sll故障 IEEE库; 使用IEEE.std_logic_1164.all; 使用IEEE.numeric_std.all; 实体移位_reg为 港口( d:在标准逻辑中; clk:标准逻辑中; rst_条:标准_逻辑中; q:输出标准逻辑向量(7到0) ); 末班次登记; shift_reg的体系结构post_vhdl_08为 开始 过程(时钟、rst_条) 变量q_int:std_逻辑_向量(7到0); 开始 如果rst_条='0',则 q_int:=(其他=>'0'); elsif上升沿(clk)则 q_int:=q_int(6到0)&d; 如果结束; q

我可以为您提供这种左/右移位或使用旋转的方法(VHDL'87!) ieee库; 使用ieee.std_logic_1164.all; 使用ieee.numeric_std.all; 实体桶移位器为 通用型(gSize:natural:=3); 港口( iPortA:标准逻辑向量(2**gSize-1向下至0); oPortQ:输出标准逻辑向量(2**gSize-1向下至0); iShiftDigits:标准逻辑向量(gSize-1向下至0); IMO取消选择:在标准逻辑向量中(1到0) ); 端

VHDL非解析信号&x27;i2c接收数据和x27;有多个来源

我正在通过I2C将FPGA连接到MPU-6050陀螺传感器。我已经尝试了不同的方法,但现在我得到了错误:未解决的信号‘i2c_rx_data’有多个来源(106) 你知道我做错了什么吗 格雷廷斯洛斯波斯特酒店 我的源代码: ----------------------------------------------------------------- -- Project : Invent a Chip -- Authors : -- Year :

连接到同一输出的多文件8位寄存器(VHDL)

我使用两个3位地址寄存器创建了一个64字节的RAM,并使用两个3to8解码器创建了3位寄存器的交叉条。以下是VHDL代码: library ieee; use ieee.std_logic_1164.all; entity ram88 is port(a : in std_logic_vector (2 downto 0); s0: in std_logic; s1: in std_logic; s: in std_logic; e

有限状态机VHDL复位

我是VHDL新手,我对FSM的实现有一个疑问。 我想要图片中显示的行为(我用AHDL实现了相同的FSM)。当我用VHDL实现它时,我有一个不同的重置行为:如果它检测到重置=1,同时有一个上升沿,FSM不会继续,但它会继续将PS置于S0。 我知道问题是如果。。。elsif(它检测到正确的第一个条件,我想不会进入第二个条件)。 我尝试了许多不同的方法,但仍然不起作用,输出在第一个上升沿后也保持在00 AHDL实现的波形: VHDL实现的波形: 库ieee;——塞克斯韦林巴朗图书馆 使用ieee.

Vhdl 如何在FPGA斯巴达板上计数按键

我用的是FPGA斯巴达2板,我想数一数键盘上的按键 这是我的VHDL代码: 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 Keyboard IS PORT(CLOCK : IN STD_LOGIC; RESET : IN STD_LOGIC;

可以用vhdl关闭时钟吗?

如何使用Virtex 7在vhdl的特定条件下关闭时钟(0) 前 下面是一个伪代码: if(x>1) clk off else clk on (rising-edge) 你所描述的是一个“门控时钟”,这通常不是一个好主意。如果目标是节能,则可以通过启用时钟来实现。时钟启用时发生的情况是,时钟仍在运行,但在关闭时钟启用时,您会阻止always块(在Verilog中)或进程(在VHDL中)内的逻辑切换触发器。这里有一些伪代码 always @(posedge i_clk) begin

VHDL中的奇怪行为

我正试图在50兆赫的频率下对14位ADC信号进行积分(求和)。积分从信号“触发器”的上升沿开始。如果积分达到规定的阈值(6000000),数字信号(“dout”)应设置为0(变为1,“触发器”变为1)。到目前为止,这是一项相当容易的任务。 尽管在硬件本身(Cyclone V)上,我意识到了一种奇怪的行为。虽然我将电压电平保持在ADC恒定,但输出信号“dout”的脉冲宽度有时会波动(尽管对于具有低噪声的ADC的恒定14位值,它应该保持几乎恒定)。脉冲宽度随着电压水平的升高而减小,因此集成本身工作良

VHDL错误10568 can';“不写入接口对象”;a「;中的模式 farc4bit的架构行为是 组件fa1bit 端口(a、b、ci:STD_逻辑中; s、 co:输出标准逻辑); 端部元件; 信号c1、c2、c3:STD_逻辑; 开始 a

错误信息相当全面:无法写入进入模块的信号 a、 b和cin都在STD_逻辑中a,b,ci:但您尝试编写它们。欢迎使用堆栈溢出。你想在代码中做什么?您需要添加farc4bit实体描述。我需要创建一个全加器4bit。我显示的代码只是架构部分。farc4bit是顶级实体,我调用子电路farc1bit 4次。在堆栈溢出时,您应该始终发布@jhbonaris啊,是的。fa1bit的港口定义误导了我。我将删除该评论。 architecture behavioral of farc4bit is compo

设置高位时的VHDL/GHDL二进制32位写入溢出

我有一个VHDL测试台,我想把32位二进制字写入一个文件进行测试。下面是一个最小的、完整的、可验证的示例 当使用GHDL(下面的命令)执行时,在指示行生成溢出。如果该行被注释掉,执行将成功完成并写入文件。只要设置高位,就会发生溢出 library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use std.textio.all; use std.env.stop; entity u32_file_write is e

Vhdl 有没有一种方法可以通过单个输入切换顶级文件的输出?

我正在设计一个系统,它有两个独立的计数器同时执行,两个计数器都向一组4个LED输出4位二进制信号。一个计数器的输出总是由LED显示,而另一个计数器仍在计数(只是没有显示到LED的输出)。通过按下一个按钮激活切换,该按钮将LED上显示的输出从一个计数器切换到另一个计数器 我甚至不知道从哪里开始在我的设计中包含这个功能。我不确定是否可以将逻辑包含到顶层文件中,并切换发送到LED的信号(我甚至不确定这是否可行),或者是否可以将必要的逻辑包含到计数器文件中。我的程序包装文件位于下面,显示了顶级组件的实例

非奇异定点数(ufixed)和无符号数之间的VHDL算术运算

我想在VHDL中执行无符号数和无符号定点数之间的算术运算: 信号A:ufixed(11到-8); 信号B:无符号(11到0); 信号C:ufixed(A’范围); 对整数部分执行算术运算的最佳方法是什么,如下所示: ca, B=>B, C=>C); --波形产生 WaveGen_过程:过程 开始 A在fixed\u-pkg包中有一个to\u-fixed函数: function to_ufixed ( arg : UNRESOLVED_UNSI

Vhdl 尝试为DE1SoC合成Verilog代码时出错?

我试图在Verilog设计中实例化一个VHDL组件,作为在另一个复杂设计中测试除法函数的一部分。获取语法错误: 错误(10170):文本附近deldel.v(29)处的Verilog HDL语法错误: “[“期待”)” 我的VHDL文件: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; use IEEE.NUMERIC_STD.ALL; entity divi

Vhdl:无约束数组和大小实例化

我试图将数组大小(integer ArraySize)从顶级文件传递到组件,但出现错误: [Synth 8-561]范围表达式无法解析为常量[/uncorray.vhd]:39] 我想知道是否有办法做到这一点。另外,如果一个无约束数组必须定义为常数,那么重点是什么 无约束测试 library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity UnconstrainedTest is Port ( clk : in std_logic;

在VHDL中,无约束数组';当作为参数传递给函数/过程时,s索引范围默认为?

我使用的函数返回用户定义的无约束数组: type t_array is array(integer range <>) of std_logic_vector(7 downto 0); 类型t_数组是std_逻辑_向量(7到0)的数组(整数范围); 然后将该数组传递给一个过程。在我的过程或函数中,没有明确定义数组的范围 当数组作为参数传递时,它的索引范围默认为什么?它将默认为与参数关联的任何内容。因此,在本例中: library IEEE; use IEEE.std_logic_

过程中的VHDL指令是';不执行

我的任务是设计缓存和缓存控制器。我正在从内存中读取一个块的16个字节,并将其写入缓存。仅在块的最后一个字节上,数据_数组不更新,保持0。我已经成功地将一个意外的行为隔离到一条奇怪的没有执行的指令 library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity cache is ... port( ... m_readdata : in std_logic_vector (7 downto 0

  1    2   3   4   5   6  ... 下一页 最后一页 共 35 页