vhdl相关内容

VHDL 没有运算符“-"的函数声明;

所以我有一项任务是在 2 个向量之间进行模运算(这里称为红利和除数),所以我需要的是红利模除数.我们对这段代码有一些限制,即不能使用iee_std_logic_1164、textio等.我认为唯一允许的库是IEEE和IEEE.numeric_bit 这个操作的算法告诉我: while(dividendo >= divisor){红利 = 红利 - 除数}回报红利 然后我写了这个 vhdl ..
发布时间:2021-09-17 19:52:41 其他开发

如何流水线我的 2s 补码乘法器?

我在 VHDL 中设计了一个 8x8 2s 补码乘法器,它似乎不符合我的 PSD 估算器的需求,我认为我必须将其转换为流水线.你有我的乘数.谁能告诉我如何应用管道使我的乘法器运行得更快? 问候 图书馆IEEE;使用 IEEE.std_logic_1164.all;使用 IEEE.std_logic_arith.all;使用 IEEE.std_logic_unsigned.all;使用 ie ..
发布时间:2021-09-17 19:52:38 其他开发

在 VHDL 中添加无法编译?

我知道这是一个相当臭名昭著的话题,但通常的解决方案似乎都不起作用.. 这是给出错误的行: ppl_stage_cnt 这是我得到的错误(来自 xst): 第 89 行:找到运算符“+"的“0"定义,无法确定“+"的精确重载匹配定义 这里有更多信息可以放在上下文中: 信号 ppl_stage_cnt : std_logic_vector(log2(ppl)-1 downto 0); ..
发布时间:2021-09-17 19:52:35 其他开发

函数中缺少 EOF

我有这个 VHDL 代码,它应该可以用作带有查找表的正弦发生器. 我不断收到错误“函数中缺少 EOF",或者在modelsim 中只是“语法错误". 我有一些在线教程中的语法,它似乎是正确的.怎么了? function WAVE(X : integer) -- 这里是错误标记返回整数是变量 foo:整数;开始带 X 选择foo := 0 时 0, 4 时 1, 7 时 2, 11 时 ..
发布时间:2021-09-17 19:52:33 其他开发

通用加法器“推理架构":模拟错误

所以,我必须创建一个带有进位和进位的通用 N 位加法器.到目前为止,我已经制作了两种完全可用的架构,一种使用 generate 函数,一种使用 rtl 描述,如下所示: 实体: library ieee;使用 ieee.std_logic_1164.all;使用 ieee.numeric_std.all;实体 adder_n 是泛型(N:整数:=8);港口 (a,b: 在 std_logi ..
发布时间:2021-09-17 19:52:30 其他开发

vhdl quartus:范围的左边界必须是常数

有没有办法在 std_logic_vector 中使用变量(信号)而不是使用常量,例如: dout((8*index + 7) downto 8*index) 在这个例子中,信号是 index 提前致谢 解决方案 假设信号或变量 index 是整数类型,应该可以正常工作.如果 index 是 std_logic_vector 类型的信号或变量,则需要将其转换为整数. 看下 ..
发布时间:2021-09-17 19:52:27 其他开发

VHDL 函数需要额外的 LE?

我正在创建一个包,其中包含类似于以下内容的多个定义 -- 控制寄存器地址类型声明SUBTYPE ctrl_reg_addr_type IS std_logic_vector(ADDR_BITS-1 DOWNTO 0);-- 控制寄存器数据类型声明SUBTYPE ctrl_reg_data_type IS std_logic_vector(DATA_BITS-1 DOWNTO 0);-- 控制寄 ..
发布时间:2021-09-17 19:52:24 其他开发

VHDL-使用变量

我是 VHDL 的新手.这是除法代码. 库 ieee;使用 ieee.std_logic_1164.all;使用 ieee.std_logic_unsigned.all;使用 IEEE.numeric_std.all;实体部门3是端口(num1,num2:在std_logic_vector(7 DOWNTO 0)中;商:出 std_logic_vector(15 DOWNTO 0));结束分区 ..
发布时间:2021-09-17 19:52:21 其他开发

Modelsim/读取信号值

在我的模拟中,我希望能够以读写方式访问项目中任何位置的信号.为了获得写入权限,我使用了modelsim_lib 库中的“signal_force"过程.但是为了获得读取权限,我还没有找到相应的功能. signal_force 适合我的需求的原因是我正在处理输入文本文件,所以我有来自“字符串"或“行"变量的信号的名称和值,我可以直接给出这些变量到函数.我不能使用“init_signal_spy ..
发布时间:2021-09-17 19:52:18 其他开发

在 VHDL 过程中写入后读取

以下代码是一个非常简单的 VHDL 程序. entity 实体是港口(时钟:在 std_logic 中;out_value: 输出 std_logic;);终端实体ent;ent 的架构 ent_arch 是信号计数器:std_logic_vector(3 downto 0);开始进程(时钟)开始如果rising_edge(clk) 那么计数器 '0') ;万一;万一;结束过程;结束 ent_ ..
发布时间:2021-09-17 19:52:15 其他开发

一个简单的 VHDL 电路不会显示初始值

这是我的代码,非常简单.我将在 Altera Cyclone II 板上循环显示字母表的前 8 个字母. entity lettercycle is港口(SW : 在 std_logic 中;- 拨动开关HEX0 : out std_logic_vector(6 downto 0) -- 7段显示);结束字母循环;lettercycle 的架构行为是信号计数器:整数范围 0 到 7 := 0; ..
发布时间:2021-09-17 19:52:09 其他开发

如何定义求和结果的宽度?

我有几个无符号的 8 位宽数字需要加/减.下面的例子: h_tmp 我知道 13 位宽的结果对于我拥有的数字是可以的,所以我将 h_tmp 定义为有符号(12 到 0).现在,合成后我有以下警告 宽度不匹配.宽度为 13 位,但分配的表达式为 8 位宽. 似乎合成器推断出一个 8bits-wide 的计算结果,我做错了什么? 解决方案 假设加法/减法 (+/-) ..
发布时间:2021-09-17 19:52:06 其他开发

带有 When 语句的十六进制到 7 段编码器语法错误

我正在尝试创建一个 16 进制到 7 段的编码器.当我合成时,我在有 when 语句的每一行上都会出错,我不知道为什么.如果有人能指出我正确的方向,我将不胜感激! architecture 编码器的行为是开始案例十六进制是当“0000"=>一个 解决方案 你不能在进程之外使用 case 结构. 如果你想要一个案例结构,你会写: 过程(十六进制)开始案例十六进制是当“0000"=>一 ..
发布时间:2021-09-17 19:52:04 其他开发

VHDL中有限状态机的奇怪行为

因此,作为大学实习的一部分,我最近开始学习 VHDL.这一次,我们的任务是创建一个摩尔机,您可以在其上以某种方式设置时间并将其用作倒计时,一旦达到 0 就会触发警报. 开始状态是“空闲",如果你按“keySet_in",你可以通过按“keyUp_in"增加它或“keyDown_in"减少它来设置分钟.如果您按任何其他键,倒计时将转到“开始"并以默认值 1 分钟开始.还有LED控制时钟上的小数 ..
发布时间:2021-09-17 19:51:58 其他开发

VHDL 将字符串文字扩展到 std_logic_vector

我正在尝试将像 B"101" 这样的字符串文字转换为 C_NO_OF_CHANNELS 位 std_logic_vector. 正在做: library ieee、std、switch_core;使用 ieee.std_logic_1164.all;使用 ieee.numeric_std.all;std_logic_vector(调整大小(无符号(B“101"),C_NO_OF_CHANN ..
发布时间:2021-09-17 19:51:55 其他开发

为什么会得到推断闩锁?

我知道当并非所有可能的路径都被定义时会发生推断闩锁,但我已经考虑在我的过程中避免这种情况: 信号是: signal BothButtons : std_logic_vector (1 downto 0) ; 流程是: Signaling : process(button0, button1)开始if (button0='0') AND (button1 = '0') thenBothB ..
发布时间:2021-09-17 19:51:52 其他开发

如何将记录写入内存并在 VHDL 中取回?

在 VHDL 伪代码中,我想实现的是: type tTest 是记录A : std_logic_vector(3 downto 0);B : std_logic_vector(7 downto 0);C : std_logic_vector(0 downto 0);结束记录 tTest;...信号 sTestIn : tTest;信号 sMemWrData : std_logic_vector( ..
发布时间:2021-09-17 19:51:49 其他开发

在 Vhdl 中创建实时延迟

我想写一个设计,其中一个进程在 1 分钟后被激活. 我又创建了一个进程来使用计数器增量创建延迟,并切换一个信号,并在必须延迟的进程的敏感度列表中给出该信号. 信号 delay_over : std_logic;过程 ( delay_over )开始如果 clk'event 和 clk '1' 那么- 设计万一;结束过程;延迟:过程( clk )变量计数器:整数:= 0;开始--设计来制造延 ..
发布时间:2021-09-17 19:51:47 其他开发