问题标签 [lattice-diamond]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vhdl - 警告“没有负载”,但我不明白为什么
对于任何 uart 的每个实例(当前为 11 个),我都从 Lattice Diamond 收到了这些警告
VHDL代码是
这是一个单一的 uart,要创建它们(目前是 11 个 uart)我用这个
我可以合成它并且UART工作,但为什么我收到警告?
恕我直言,rxCounter 应该使用每个可能的值,但是为什么每一秒都会产生警告“没有负载”?
我在某处读到这意味着这些网络没有被使用并且将被移除。
但是要从 0 数到 2^n-1,我需要不少于 n 位。
warnings - 格子钻石:设置时钟
我正在学习 Verilog 并使用 CPLD,但我被困住了。我编写的代码切换了一个 LED,但在综合过程中我不断收到警告。
我收到这些警告:
@W:MT420 |发现推断时钟 LEDON|clk 周期为 1000.00ns。请在对象“p:clk”上声明一个用户定义的时钟
警告 - 地图:C:/Documents and Settings/belo/Desktop/LedOn2/LedON2.lpf (4): FREQUENCY NET "clk" 2.080000 MHz 中的错误;
警告 - 地图:首选项解析结果:检测到 1 个语义错误
警告 - 地图:首选项文件“C:/Documents and Settings/belo/Desktop/LedOn2/LedON2.lpf”中有错误。
警告 - 地图:首选项文件“C:/Documents and Settings/belo/Desktop/LedOn2/LedON2.prf”中存在语义错误。
我的 LPF 文件如下所示:
那么有谁知道如何解决这些时钟警告?
verilog - 合成过程中的错误
我为模拟目的编写了下面给出的 Verilog 代码。它在模拟过程中正常工作。
现在我正在使用 Lattice Diamond 合成上述代码,在“地图设计”步骤中出现错误。错误如下: -
为什么我会收到这些错误以及如何解决它们。
verilog - 如何在综合级别访问文本文件
我正在使用 Lattice Diamond 编写 Verilog 代码进行综合。
我在一个文本文件中有二进制数据,我想将其用作我的代码的输入。
在模拟级别,我们可以使用$readmemb函数来做到这一点。这是如何在综合层面完成的?
我想访问文本文件中存在的数据作为 FPGA 的输入。
正如 Martin Thompson 先生所建议的(答案如下),我编写了一个 Verilog 代码来从文件中读取数据。
Verilog代码如下: -
当我在 fpga 上运行此代码时,我面临以下问题:-
如果我要读取的文本文件只有一位是“1”,那么我可以将输入输出引脚分配给时钟、复位和 ROM。但是,如果我在文本文件中有一位为“0”或多于一位的数据,我将无法分配输入引脚(即时钟、复位)并显示警告:-
我无法理解为什么会收到此警告以及如何解决它。
vhdl - 格子钻石2.1
我将我的机器从 WinXP 升级到 Win7,同时安装了 Lattice Diamond 3.1。我的更复杂的模拟挂起,Active-HDL 使用 100% 的 CPU 时间并且显然处于无限循环中。愚蠢的是,我没有安装 Lattice Diamond 2.1 或 2.2,而且令人难以置信的是,Lattice 只允许您下载最新版本。没有退路!
有没有人有 Lattice Diamond 2.1 或紧要关头 2.2 的安装文件?如果有的话,我可以提供一个 FTP 来安装它。我知道它是一个大文件,可能 1G+。
实际上,我可以将 Win7 中的 Active-HDL 9.2 目录复制到另一台机器上的虚拟框中,然后覆盖 Active-HDL 9.4 目录。我仍然不介意旧的安装文件,但至少我现在可以模拟。而 Diamond 3.1 实际上可以消除 bkm 警告和错误。2.1 中有两个错误,技术支持实际上承认我的警告是钻石错误而不是我的代码中的缺陷。
time - 在 Verilog 中创建可以合成的时间延迟
我正在尝试创建一个可以合成的时间延迟,而不仅仅是在我的模拟中工作。延迟需要为 1.439548 毫秒或尽可能接近该精度。我正在使用 Lattice Diamond 和 MACHX02 7000HE FPGA。延迟用于等待数据事务之间所需的指定时间。到目前为止,我正在使用一个内部振荡器来运行一个单独的计数器,该计数器用于在指定的时间间隔(使用 2.15Mhz,38400 波特)一次吐出我的数据。我是否需要使用另一个时钟/计数器来延迟?如果是这样,是否有人熟悉如何定义和使用该板的时钟?我很困惑,这是我程序的最后一个要求。任何帮助表示赞赏。
verilog - Lattice Diamond 中缺少信号名称
我有一个用于 SPI 多路复用器的 Lattice Diamond 项目,它具有以下模块定义:
当我进入电子表格视图分配我的引脚时,并非所有引脚都显示在信号名称下拉列表中。例如,它看起来像这样:
您会看到 miso[0] 在那里作为输入端口,但所有其他 13 个 miso 位都没有。此外,缺少 bmck、bssel 和 bmosi。他们还没有被分配到任何其他引脚,所以谁能解释为什么他们不会在那里?
generics - 使用 Lattice Synthesis Engine (LSE) 时,如何将字符串作为通用参数传递给我的 VHDL 顶级实体?
我是 Lattice Diamond 的新手,但我有使用 Xilinx ISE、Vivado 和 Quartus 的经验 :)。
我发现——就像在赛灵思 ISE 中一样——莱迪思综合引擎 (LSE) 支持顶级实体的通用参数。(右键单击“impl1”-> 属性 => HDL 参数)
我用整数参数对其进行了测试,它有效:A_BITS=10;D_BITS=32
.
但是我怎样才能传递一个字符串参数呢?
我的测试:
A_BITS=10;D_BITS=32;FILENAME=ocram_sdp.mem
这会导致未知文字值错误错误 - D:/git/PoC/src/mem/ocram/ocram_tdp.vhdl(82,3-82,11) (VHDL-1241) ocram_sdp.mem 未声明
错误 - D:/git/PoC/src/mem /ocram/ocram_tdp.vhdl(82,3-82,11) (VHDL-1363) 未知的实际通用文字值 ocram_sdp.mem 用于通用文件名被忽略
错误 - D:/git/PoC/src/mem/ocram/ocram_tdp.vhdl (82,3-82,11) (VHDL-1081) 正式文件名没有实际或默认值
INFO - D:/git/PoC/src/mem/ocram/ocram_tdp.vhdl(78,8-78,17) ( VHDL-1067) 详细说明 ocram_tdp(rtl)
信息 - D:/git/PoC/src/mem/ocram/ocram_tdp.vhdl(78,8-78,17) (VHDL-1068) 详细说明实体 ocram_tdp 失败当我用 . 转义点时也是如此
\
。A_BITS=10;D_BITS=32;FILENAME="ocram_sdp.mem"
这会导致错误数量的参数错误。-sdc 选项:未使用 SDC 文件输入。
-lpf 选项:输出文件选项为 ON。
错误 - -hdl_param 的参数数量错误。必须有 <name, value> 对。
完成:错误代码 2仅
A_BITS=10;D_BITS=32
通过 HDL 参数设置并FILENAME
通过通用部分中的默认值进行设置,工作正常。
Lattice Diamond 3.6 用户指南没有提及关键字“HDL”和/或“param(eter)” 。
- 如果可能,如何将字符串传递给顶级实体?
- 是否有单独的 LSE 用户指南?
vhdl - 任何人都可以确认,莱迪思综合引擎没有正确评估 VHDL 断言语句吗?
我正在使用断言 VHDL 语句来检查 VHDL 架构中的全局常量和通用参数,如果它们遵守 VHDL 设计的支持参数集。
日志中报告了始终true
断言语句。我认为这是一个错误。
例子:assert TRUE report "This should not be visible in the LSE log." severity NOTE;
这是完整的测试示例:
这是我的 LSE 日志:
信息 - 综合:d:/.../assert_test.vhdl(40):找到用户声明的 VHDL 断言类型注意:“这在 LSE 日志中不应该是可见的。”。VHDL-1700
INFO - 综合:d:/.../assert_test.vhdl(43):找到用户声明的 VHDL 断言类型注:“内部 genInfer”。VHDL-1700
INFO - 综合:d:/.../assert_test.vhdl(51):发现用户声明的 VHDL 断言类型为失败:“尚未支持供应商'vendor_lattice'。”。VHDL-1700 顶级模块名称 (VHDL):assert_test
- 任何人都可以确认这种行为吗?
- 这是一个错误,不是吗?
解决方法:
将assert
语句放入generate
语句中,作为一种解决方法。
initialization - Lattice Diamond 如何将初始 RAM 值映射到 EBR 原语?
我正在从磁盘读取 4 KiB(1Ki x 32 位)True-Dual-Port RAM 的初始 RAM 值。因为我的 Lattice ECP5 设备只有 18 位宽的嵌入式块 RAM (EBR),所以将 2 个 RAM 组合起来以匹配 32 位的字长。
我的ocram.mem
文件有 4 条数据线,每条线有 8 个十六进制数字(=> 32 位字线)。
该文件如下所示:
我的读取函数在 LSE 日志中报告了这些行:
因此,第一行按预期跳过,以下行字符串也可以。在行读取和 char 到 std_logic_vector 的转换之后,我再次将我的 2D STD_LOGIC 矩阵输出到 LSE 日志中:
可以看到,这些值仍然没有受到损害。
合成完成没有错误。
所以我开始在 Lattice Diamond 中进行地图和 P&R。平面图视图向我展示了 2 个使用过的嵌入式块 RAM - 这是预期的。但是当我点击 RAM 时,INIT 值看起来很奇怪。
我承认我的一些价值观,但不是全部。我在 EBR 或 ECP5 文档中没有找到任何线索。
- 初始值如何映射到 RAM?