有一个问题被问及如何在不改变数据内存的情况下将加载字节实现到单周期数据路径中,解决方案如下
这其实是一个相当现实的问题
问题,;大多数内存系统都是
完全以单词为基础,个性化
通常只处理字节
在处理器内部。当你看到一个
“总线错误”在许多计算机上,这
通常意味着处理器已尝试
要访问已被删除的内存地址,请执行以下操作:
未正确对齐单词,并且
内存系统引发了异常。
无论如何,因为字节地址可能
不是4的倍数,我们不能通过
它们直接存储在内存中。然而,我们
仍然可以获取任何字节,因为
每个字节都可以在一
标签: Vhdl
fpgasystem-on-chipamba
这里有人用定制硬件扩展LEON3软核吗?我正在寻找如何将自定义外围设备添加到AMBA AHB总线的基本示例。此文档是否有帮助
JC
我正在读一本VHDL的书,很难理解他们给出的一个例子
代码如下:
-------------------------------------------------------------------
-- RET T Flip-flop model with active-low asynchronous set input. --
-------------------------------------------------------------------
-- library de
标签: Vhdl
simulationclockactive-hdl
我有两个模块使用相同的时钟,但在不同的文件中,当我在模块B中对来自模块A的信号进行采样时,在波形模拟中,它在一个时钟周期后不会像应该的那样获得采样,它显示采样在相同的上升沿(适合异步安装的行为)
我已经知道这是因为有源HDL因为不同的分量将它考虑到2个差分时钟,这就是为什么它在同一上升沿采样(因为信号从A到B的δ时间)。
如何定义活动HDL将理解它们在同一区域使用相同的时钟?这与您的模拟器无关。我假设你在做这样的事情:
+----------+ +------
我正在为突破游戏的FPGA实现做一个项目。在这场比赛中,我们必须用球和桨来打破砖块。一些砖块可能在与球的多次接触中破裂。为此,我使用整数数组来表示打破特定砖块所需的命中数。eg(2,0,1,2)表示一个砖块,需要两次敲击才能破碎,然后是一块破碎的砖块,然后是一块需要一次敲击才能破碎的砖块,等等
此外,我已经用VHDL完成了所有的编码,但为了将结果输出到VGA屏幕上,我使用的是Verilog
在VHDL中,我为包中的整数数组声明了一个类型,如下所示:
package mytypes_pkg is
我正在用VHDL设计一个导频插入模块,该模块将在作为OFDM系统一部分的FPGA上实现。对于来自调制组件的每48个字,导频插入将添加导频音调和空值,以填充64信道IFFT的剩余信道。我试图实现这个系统的流操作,因此它将不断产生64个样本,以固定的延迟串行输入到IFFT
我的方法是使用两个端口RAM,一个端口用于接收调制字,另一个端口用于向IFFT写入。每个端口都在一个独立的时钟上运行,在设备外部,我有一个4/3时钟分频器,因此输出每48个时钟接收64个时钟到输入
我的问题是这是否是一种有效的设计
标签: Vhdl
fpgaxilinxhdlintel-fpga
我有一个关于从数字标准到标准逻辑向量转换的问题。我正在使用我在网上看到的移动平均滤波器代码,过滤我的ADC值以稳定这些值
过滤器包代码为:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
package filterpack is
subtype number is unsigned(27 downto 0);
type numbers is array(natural range <>
例如,我有一个组件(例如,具有128个输入和1个输出的多路复用器)。我想实例化这个组件。所以我需要这128个输入的端口映射。我的问题是:有没有比编写128条语句更简单的128端口映射方法
非常感谢
假设我们有这个组件:
component MUX_1bit is
port(
data0 : IN STD_LOGIC ;
data1 : IN STD_LOGIC ;
......
data127 : IN STD_LOG
我必须设计一个带有RAM的小型CPU,我面临一个我无法处理的问题。首先,我的代码:
这是公羊
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity memory is
Port(
clk: IN std_logic;
instruction: IN std_logic;
address : IN s
我想知道如何在一个模块中通过信号连接输入端口和输出端口
我想将名为“rs422_top”模块的组件中的rx422_I连接到tx422_o。我使用信号“tx422”在端口之间桥接
但是,这会产生一个合成错误,指出“tx422_o”有多个驱动程序
你知道如何解决这个问题吗
我的代码如下:
entity nsgcc_top_rs422 is
port (
...
rx422_i : in std_logic;
tx422_o
我正在使用IP核实现128点fft。在FFT IP的数据表核心v-7 DS260中提到,输入必须以2的补码形式和定点表示给出。有人能告诉我如何给出输入(即,2的补码+定点或仅2的补码或仅定点)??
请早日回复。如果数据表要求使用定点2秒补码,那么是否使用该补码
library ieee;
use ieee.numeric_std;
……和:
signal myData : signed(31 downto 0);
VHDL不理解固定点(不包括ieee_提出的固定点包?),因此您只能在心里跟踪
我正在尝试用VHDL-AMS为C中的loop for编写代码
for (i=0; i<m; i*=k)
for(VHDLfor中的i=0;i循环的行为与C中的稍有不同。与C不同,C中的数学是在循环变量上进行的(i),在VHDL中,afor在范围内的每个值上循环步数。通常,VHDL中的循环变量将是一个整数,因此可以在整数范围内的每个值上循环步数。但必须在每个值上循环步数-不能错过它们
那么,如何解决您的问题呢?一种方法是按照建议使用while循环;另一种方法是使用for循环,但在整数范围内
我正试图在ghdl中使用我自己的包。有人能帮我做一下结构和编译吗。目前,我的代码如下所示:
在./my_package/my_package.vhd中
library IEEE;
use IEEE.std_logic_1164.all;
package my_package is
constant my_constant : std_logic_vector(3 downto 0) := "1111";
end my_package;
library IEEE;
use IEEE.std
标签: Vhdl
verificationxunitmodelsimvunit
想试试,就这样跟着走了
对于blog1,我安装了pythonver。3.6和使用ModelSim版本。10.5a
对于blog 2,我下载了示例项目,但运行时:
python run.py --compile
结果是如下所示的错误:
C:\work\udp_ip_stack-master>python run.py --compile
ERROR - Cannot add library named work. work is a reference to the current l
这个问题涉及到定义一个可以接受参数化长度数组的模块的能力
我目前拥有的是:
use work.my_types.all;
entity Calc is
port (clk : in std_logic;
y1, y2, yc, y3, y4 : in u8exrow;
lap_l, lap_r : out s9row) ;
end Calc;
其中,u8exrow和s9row类型是my_types包中定义
这里我上传了模拟结果。在突出显示的部分,应将sys_clk分配给两个信号
我已经编写了vhdl代码,用于在定义的sclk_1和sclk_2信号延迟一段时间后分配系统时钟(Sys_clk)
当代码运行并执行时,在计数器计数25次后的模拟中,这两个信号的状态仅显示为高(逻辑电平高),而不是系统时钟(Sys_Clk)
我使用的是Artix 7 Basys-3板,它有100MHZ的系统时钟
有人能帮助我如何在定义的信号上分配系统时钟(系统时钟)
architecture Behavioral of Po
我有一个环形计数器,它有一个使能和一个计数使能。在我更大的设计中,计数使能与时钟同步(我指的是控制它的电路在上升沿拉回0)
注意:
F0和F1输出应在t=130 ns时的上升沿发生变化。然而,计数输入在环计数器读取它的同时被拉下
如何从VHDL中获得正确的行为?这是我的密码:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity ring_counter_top is
Po
我目前正在用VHDL实现一个MIPS处理器。系统组件(将ALU、寄存器文件、控制单元等粘在一起)具有以下实体描述:
entity system is
port (
reset : in std_logic;
sys_clk : in std_logic;
instruction : in std_logic_vector(15 downto 0);
sy
我有一个连接到UART接收器的VHDL组件。uart有2个输出信号,一个用于接收的字节,另一个用于接收完字节后设置为1的标志
我已经编写了以下模块,它应该为每个新字符增加一个计数器,并显示它点亮一些LED
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
use ieee.numeric_std.all;
entity test is
port (
clk : in std_logic;
rst : in std_logic;
ena : in
我试着在EDA平台上做一个8x1多路复用器的代码,结果出了问题。我搜索时发现的错误来自verilog语言,我不明白为什么?我一次又一次地检查我的代码,没有发现任何错误。请参阅下面链接中的代码来运行它,并帮助我解决is问题,我理解为什么会出现此错误
您需要将测试台重命名为与模块不同的名称
将其称为“多路复用器测试”
i、 e.以下几行
testbench.vhd
ENTITY multiplexer IS
END multiplexer;
ARCHITECTURE behavior OF mul
请看一下这个简单状态机的示例代码:
entity Top is
Port ( Clock : in STD_LOGIC;
Reset : in STD_LOGIC;
TREADY : out STD_LOGIC
);
end Top;
architecture Behavioral of Top is
type STATE_t is (S0, S1, S2);
signal CurrentSta
标签: Vhdl
hdlmodelsimquartus
当我尝试在modelsim中模拟我的测试台时遇到了一个问题,我得到了一个错误,即我的实体没有架构。testbench在modelsim中编译得非常完美,但是当我开始模拟时,我得到了上面提到的错误
如果你能帮我,我会非常感激的
实体在quartus ii中编译,测试台在modelsim中编译,但是当我在modelsim中模拟时,即使我选择了架构行为,它也会说我无法模拟,因为它没有架构
library IEEE;
use IEEE.Std_logic_1164.all;
entity finalP
为了简化模拟波的视觉读取,我想将一些信号分配给“XXXX”,但仅在模拟时,因此我希望逻辑合成工具(在我的例子中是ISE)跳过这些指令
这里有两个问题:
有没有类似于C语言的“ifdef模拟”时间的等效技术
分配给“XXXX”是否会对逻辑综合产生任何影响(重置为0?警告?无?)。如果它没有任何影响,那么我的问题就得到了回答。如果没有,我仍然需要分配到“XXXX”
谢谢。(1)您正在寻找
--pragma synthesis_off
-- your simulation-only code
--
考虑到第一个问题做得很好,仍然需要一些帮助,再次是练习考试,我有答案,只需要推理和思考过程,谢谢大家
考虑下一页显示的4位MIPS ALU版本。这里add/subt确定是进行加法(add/subt=0)还是减法(add/subt=1),op选择多路复用器输出(假设top输入由op选择000,等等)。假设需要
对于2输入and、or、xor或nor,在其最终输出时设置2个刻度
4个刻度表示一个4输入,在其最终输出时不稳定
六输入多路复用器在最终输出时的6个刻度
和进位输出的最新到达输入的8个刻度
我知道这是一个相当臭名昭著的话题,但通常的解决方案似乎都不起作用
下面是给出错误的一行:
ppl_stage_cnt <= ppl_stage_cnt + 1;
这里有更多的信息来说明这一点:
signal ppl_stage_cnt : std_logic_vector(log2(ppl)-1 downto 0);
pplstage_cnt: process ( clk )
begin
if rising_edge( clk ) then
if
我必须将以下vhdl程序转换为verilog:
ENTITY ascounter IS
PORT (CLK :IN STD_LOGIC;
QoutA, QoutB, QoutC, QoutD :OUT STD_LOGIC);
END ascounter;
ARCHITECTURE circuit OF ascounter IS
SIGNAL CLKnot, QBnot, QCnot, QDnot, QA, QB, QC, QD, HIGH :STD_LOGIC;
BE
标签: Vhdl
fpgainter-process-communicat
我在流程之间的通信方面有问题。我曾经用flag和clearFlag来解决这个问题,但这有点烦人,看起来不太好。处理此问题的最佳做法是什么?下面是一个关于我以前是如何做到这一点的示例代码:
Proc_A : process (clk, reset, clrFlag)
begin
if clrFlag = '1' then
flag <='0';
elsif reset = '0' then
A <= (others => '0')
为什么信号“状态”和“返回状态”的值在modelsim波形中不切换。我正在用(ISE设计套件14.1)测试台和ModelSim SE plus 6.5模拟SD接口(SPI总线)。问题是FSM中的状态名称在波形中不切换。信号“状态”和“返回状态”始终处于“RST”状态。我已经在测试台上声明了信号“state”、“return_state”和“type states”。当我使用step函数进行模拟时,指针显示模拟在状态之间切换。我需要看到波形中的状态变化,但我不知道我做错了什么。密码打开了。请帮忙
如何实现一个VHDL函数,该函数具有不关心的输入,并且直接表示不关心的内容
的练习4.8-2a要求我:
…编写VHDL模型,使用…选定的信号分配实现这些功能
a F a,B,C,D=a'CD'+B'C+BCD'
此代码适用于:
library ieee;
use ieee.std_logic_1164.all;
entity funca_selected is
port (
a: in std_ulogic;
b: in std_ulogic;
c: in std_
下面是我正在运行的代码。我的问题是,为什么第三个不等到modelsim中的触发?控制台输出仅在此处获得。它永远不会到达到达这里的第2行。我认为让相同的连续等待两次,直到=1就可以了,因为这两次条件都是真的。我没有在其中添加“事件”,因此我认为模拟器不需要看到边缘。有人能解释这种行为吗
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity example_wait_failure is
end ex
错误:HDLCompiler:69-D:/xilinx程序/and2/kj.vhd行82:未声明
错误:HDLCompiler:580-D:/xilinx程序/and2/kj.vhd第85行:标签不匹配;预期行为
错误:HDLCompiler:854-D:/xilinx程序/and2/kj.vhd第38行:由于以前的错误,单元被忽略
library ieee;
use ieee.std_logic_1164.all;
entity kj is
end kj;
architecture beh
以下代码是MipsCPU中的一条简单指令Memory
LIBRARY ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
ENTITY instructionMemory IS
generic (delay :time :=10 ns);
PORT( a : INOUT STD_LOGIC_VECTOR ( 31 downto 0);
我正在verilog中搜索VHDL属性的verilog等价物my_signal'last_event。我用谷歌搜索了一下,但没有成功。有人知道怎么做吗
'last\u event属性用于了解自信号上次事件以来的时间。
例如,如果在时间15us时,信号toto从0变为1。
然后在时间20us时,toto'last_事件返回5us。您是否尝试过查看一些verilog系统任务?具体如下:
$time; // Return current simul
标签: Vhdl
modelsimnested-if
Modelsim告诉我嵌套的if语句存在语法问题,我无法确定问题所在。任何帮助都会很好
when ZERO =>
if X_REG = '0' then
zero_sig <= '1';
if zero_count = '15' then
nextState <= ONE;
else
nextState <= ZERO;
我经常收到这样的消息-“#编译1stfile.vhd失败,错误为0”。每当我尝试编译文件“1stfile.vhd”时,我该怎么办?尝试使用一个不以数字开头的名称。VHDL中的标识符不能以数字开头。这不会影响文件的名称,但可能取决于您使用的工具链,而且这是一个易于测试的理论。您的问题几乎没有足够的信息。1stfile.vhd的内容是什么?完整的汇编报告/成绩单是什么?使用哪个版本(我想是ModelSim)?
我是vhdl新手,我有一个问题找不到答案
我正在尝试实现一些运算1024位长的向量的算法。所以我必须从一个文件中读取数据,并将它们插入这个temp_向量(1023到0)
该文件包含许多输入,对于每一个输入,算法对前一个输入的输出进行操作。问题在于,该输入数据的长度不是恒定的,但每个输入长度从0到16000不等
在每个循环中,我只能从测试台读取64位并插入它们。在特定时刻,我还必须将可变长度的位序列附加到已经插入的数据中。我使用整数位_位置跟踪插入数据的temp_向量的最后位置,使用整数数据_in
下面的VHDL代码是一个简单的交换程序。但它不是交换输入a和b。我在评论中给出了成绩单值
library ieee;
use ieee.std_logic_1164.all;
entity vhdl_swap is
port(a,b: inout integer);
end vhdl_swap;
architecture ar of vhdl_swap is
signal s : std_logic;
begin
process(s)
variable var : in
我正在尝试用VHDL为Altera FPGA设计一个简单的CPU。然而,我试图弄清楚如何解释ROM块引起的延迟。ROM块本身可以同时对输入地址和输出数据进行计时,也可以只对输入地址进行计时,在数据请求(设置地址)和获取数据之间提供1或2个时钟周期的延迟
我可以理解,如果ROM本质上是一个海量数据多路复用器,那么像跳转这样的操作是很简单的,因为您只需设置地址,到下一个时钟周期,正确的指令就会出现!我只是不太明白如何管理ROM和CPU之间的延迟。从我收集的信息来看,每条指令都需要知道是获取新指令、修
标签: Vhdl
xilinxfixed-pointpwm
我刚开始使用Xilinx(ISE14.7)用VHDL编程。我已经可以规划一些项目,但我正在努力做这一个。我的研究老师要求使用定点PWM。我设法将两者分开使用,但我有一些错误,现在我不知道是什么导致了实际问题。错误是:
HDLCompiler:579-“C:\Users\student\Desktop\Guilherme Moitas\Projects\pwm\u fp\pwm\u fp.vhd”第48行:在条件信号分配中分配的元素数量不匹配
错误:HDLCompiler:410-“C:\User
在VHDL的任何版本中,可能在2008年,在声明类型之前使用它是可能的吗
例如,我在实体的体系结构中有以下数组声明:
type my_array is array (integer range <>) of my_type;
现在,Vivado中出现以下错误:
[Synth 8-1031]未声明my_类型
当然,解决方案是将记录声明移到数组声明之上。但是,随着类型数量的增加,这会变得非常复杂和混乱(因为您基本上必须在拓扑上对类型进行排序,同时考虑它们的依赖关系)
每种主要编程语言都
我正在学习vhdl,当我模拟一个3位全加器时,我遇到了一个错误
使用std_逻辑_向量实现的(因为能够使用“+”操作)
只是老师给我们举的一个例子,
如果这是一个简单的问题,请原谅我。。。
以下是代码:
Library ieee;
use ieee.std_logic_1164.all;
entity adder_3_bit is
port(
a,b : in std_logic_vector(2 downto 0);
cin : in std_logic;
co
我找不到任何与此相关的问题,但有可能我只是不知道要搜索什么。使用合成工具时(如果您需要特定的工具,可以说Synplify,但最好是有一个标准兼容的版本可以跨工具工作),是否可以跟踪模块实例的数量并帮助指导合成?我想不会,但我可以看到很多类似这样的用例。让我举几个例子来说明我的意思
在某种背景下,我写这篇文章时考虑的是FPGA开发,但我打赌它也会用于ASIC设计
假设我在一个设备上有10个乘法器,我有一些操作(比如一个复杂的乘法器),我想在很多地方(不仅仅是在生成循环中,而是在整个设计中)实例化。
1.8位乘法器
IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
使用ieee.std_logic_arith.all;
使用ieee.std_logic_unsigned.all;
实体M8是
端口(M1:标准逻辑向量(7到0);
M2:标准逻辑向量(7到0);
Mout:out标准逻辑向量(15到0)
);
端M8;
m8is的体系结构
开始
过程(M1,M2)
变量A1:std_逻辑_向量(17到0);
开始
A1(17向下至0):=“0000000000”和M1(7向
标签: Vhdl
simulationtest-bench
下面是使用D触发器的计数器的VHDL代码。这里我们假设触发器是正边缘触发的
在体系结构中,我将Q(当前状态)和D声明为4位逻辑向量
我分配了所有输出(Z0到Z7)和D信号值,以分别匹配由计数器和触发器的最小输入方程确定的逻辑表达式
在代码结束时,调用一个进程来模拟清除(ClrN)和时钟(CLK)的行为
我的问题:
代码工作正常,但我面临测试台模拟的问题
在模拟中,我们需要显示电路从状态1000开始,然后以正确的顺序通过每个状态
简而言之:如何在模拟中显示信号Q和D。
这是我不确定该怎么做的部分。
我有一个16位二进制代码,将其转换为5BCD(4位)
如何将每个bcd与显示器连接?
bcd 0必须连接到显示器0(七段显示器),以便二进制数转换为十进制数,并显示在5个七段显示器上
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity binary_bcd is
generic(N: positive := 16);
port(
clk, reset
我试图生成一个16位的随机序列。
问题是输出处于未定义状态。我觉得这是由于xor语句中的并行处理。所以我推迟了,但还是不起作用
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity random_data_generator is
port (
por : in STD_LOGIC;
标签: Vhdl
multiple-conditionsmux
我需要你的帮助。我有一个带嵌套条件的VHDL,我想把它重新绘制成一个原理图。我想我应该使用一个2位多路复用器和4位多路复用器。有人能帮我吗?我试着用谷歌搜索,但没有找到任何可以帮助我的东西
process (a,b,c,d) begin
y <= '0';
z <= b;
if d='1' then
y <= b;
if a = '0' then
y <= c;
end if;
我有以下代码:
library ieee;
use ieee.std_logic_1164.all;
use std.textio.all;
entity read_fail is
end entity read_fail;
architecture test of read_fail is
begin
process
variable l : line;
constant s : string(2 to 5) := "1111";
目标是使用Xilinx的结构建模设计看门狗定时器(WDT)。WDT收到一个启动触发器,该触发器启动计数器,对59个时钟周期进行计数,产生一个时钟间隔脉冲信号重置条件,并重置为0。因此,我在photoshop中制作了下面的图表来说明组件以及它们应该如何连接。WDT是上层实体
CLKN是在SR ff和WDT(以及计数器和计数器中的T-ffs)之间共享的负边缘时钟
计数器是由T-FF制成的6位二进制计数器
六个T-ff级联,其中第一个ff时钟线的输入为系统时钟,其余FFs的时钟输入为前一个T-f
标签: Vhdl
cpu-registerssynthesis
在我的学期里,我必须为一个项目写一个8x16位的寄存器文件。
在编写这个模块之后,我们必须运行VHDL合成
但我得到了这些错误:
错误行26:语法错误
vbl_bcomp_y.y 4464:文件regfile中的错误18第26行:非法并发语句
请注意,错误也可能是由于不支持的语句造成的
这里是我用vasy进行合成的代码
--。。。
REGFILE的体系结构RTL是
类型t_regfile是标准逻辑向量(15到0)的数组(0到7);
信号寄存器:t_regfile:=(其他=>X“0000”);
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 83 页