问题标签 [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.

0 投票
3 回答
5648 浏览

vhdl - 警告“没有负载”,但我不明白为什么

对于任何 uart 的每个实例(当前为 11 个),我都从 Lattice Diamond 收到了这些警告

VHDL代码是

这是一个单一的 uart,要创建它们(目前是 11 个 uart)我用这个

我可以合成它并且UART工作,但为什么我收到警告?

恕我直言,rxCounter 应该使用每个可能的值,但是为什么每一秒都会产生警告“没有负载”

我在某处读到这意味着这些网络没有被使用并且将被移除。
但是要从 0 数到 2^n-1,我需要不少于 n 位。

0 投票
2 回答
6281 浏览

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 文件如下所示:

那么有谁知道如何解决这些时钟警告?

0 投票
1 回答
1632 浏览

verilog - 合成过程中的错误

我为模拟目的编写了下面给出的 Verilog 代码。它在模拟过程中正常工作。

现在我正在使用 Lattice Diamond 合成上述代码,在“地图设计”步骤中出现错误。错误如下: -

为什么我会收到这些错误以及如何解决它们。

0 投票
2 回答
3640 浏览

verilog - 如何在综合级别访问文本文件

我正在使用 Lattice Diamond 编写 Verilog 代码进行综合。

我在一个文本文件中有二进制数据,我想将其用作我的代码的输入。

在模拟级别,我们可以使用$readmemb函数来做到这一点。这是如何在综合层面完成的?

我想访问文本文件中存在的数据作为 FPGA 的输入。

正如 Martin Thompson 先生所建议的(答案如下),我编写了一个 Verilog 代码来从文件中读取数据。

Verilog代码如下: -

当我在 fpga 上运行此代码时,我面临以下问题:-

如果我要读取的文本文件只有一位是“1”,那么我可以将输入输出引脚分配给时钟、复位和 ROM。但是,如果我在文本文件中有一位为“0”或多于一位的数据,我将无法分配输入引脚(即时钟、复位)并显示警告:-

我无法理解为什么会收到此警告以及如何解决它。

0 投票
1 回答
645 浏览

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 中有两个错误,技术支持实际上承认我的警告是钻石错误而不是我的代码中的缺陷。

0 投票
1 回答
475 浏览

time - 在 Verilog 中创建可以合成的时间延迟

我正在尝试创建一个可以合成的时间延迟,而不仅仅是在我的模拟中工作。延迟需要为 1.439548 毫秒或尽可能接近该精度。我正在使用 Lattice Diamond 和 MACHX02 7000HE FPGA。延迟用于等待数据事务之间所需的指定时间。到目前为止,我正在使用一个内部振荡器来运行一个单独的计数器,该计数器用于在指定的时间间隔(使用 2.15Mhz,38400 波特)一次吐出我的数据。我是否需要使用另一个时钟/计数器来延迟?如果是这样,是否有人熟悉如何定义和使用该板的时钟?我很困惑,这是我程序的最后一个要求。任何帮助表示赞赏。

0 投票
1 回答
1411 浏览

verilog - Lattice Diamond 中缺少信号名称

我有一个用于 SPI 多路复用器的 Lattice Diamond 项目,它具有以下模块定义:

当我进入电子表格视图分配我的引脚时,并非所有引脚都显示在信号名称下拉列表中。例如,它看起来像这样:

在此处输入图像描述

您会看到 miso[0] 在那里作为输入端口,但所有其他 13 个 miso 位都没有。此外,缺少 bmck、bssel 和 bmosi。他们还没有被分配到任何其他引脚,所以谁能解释为什么他们不会在那里?

0 投票
0 回答
1397 浏览

generics - 使用 Lattice Synthesis Engine (LSE) 时,如何将字符串作为通用参数传递给我的 VHDL 顶级实体?

我是 Lattice Diamond 的新手,但我有使用 Xilinx ISE、Vivado 和 Quartus 的经验 :)。

我发现——就像在赛灵思 ISE 中一样——莱迪思综合引擎 (LSE) 支持顶级实体的通用参数。(右键单击“impl1”-> 属性 => HDL 参数)

我用整数参数对其进行了测试,它有效:A_BITS=10;D_BITS=32.
但是我怎样才能传递一个字符串参数呢?

我的测试:

  1. 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 失败

    当我用 . 转义点时也是如此\

  2. A_BITS=10;D_BITS=32;FILENAME="ocram_sdp.mem"
    这会导致错误数量的参数错误。

    -sdc 选项:未使用 SDC 文件输入。
    -lpf 选项:输出文件选项为 ON。
    错误 - -hdl_param 的参数数量错误。必须有 <name, value> 对。
    完成:错误代码 2

  3. A_BITS=10;D_BITS=32通过 HDL 参数设置并FILENAME通过通用部分中的默认值进行设置,工作正常。

Lattice Diamond 3.6 用户指南没有提及关键字“HDL”和/或“param(eter)” 。

  • 如果可能,如何将字符串传递给顶级实体?
  • 是否有单独的 LSE 用户指南?
0 投票
0 回答
339 浏览

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语句中,作为一种解决方法。

0 投票
1 回答
1206 浏览

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?