- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一 block FPGA SoC 板 (DE1-SoC-MTL2)。 SoC 是 Altera(现在是 Intel FPGA)的 Cyclone V FPGA 和 ARM Cortex A9 的组合,它们相互连接,可以使用 AMBA 网络交换数据。使用称为 Platform Designer(以前称为 Qsys)的工具,可以将地址分配给 HDL 创建的 block ,从而可以从 ARM Cortex A9 处理器控制 FPGA 部分中的 block 。
简而言之,我有一个 Linux 系统,它可以使用分配的基地址与 FPGA 交换数据。
我有一个大小为 300x1200 的二进制图像(黑白,1 位),我必须将它存储在内置的 FPGA RAM 中。为此,我设计了一个 RAM,它有 1200 个 304 位字(我不允许将它设为 300,因为它必须是 8 的倍数,因为地址分配仅限于字节)。假设 RAM 地址从 0x0000 开始到 0xB220 结束。我应该怎么做才能将图像存储在该 RAM 中,以便每个 300 位宽度的信息存储在 RAM 的每个字中? (我可以为此使用 C、C++(Qt 创建者),我只想从 GUI 中单击一个按钮来将图像存储在那里)
最佳答案
我能够解决问题,所以我会尝试回答我自己的问题。
304 位字词无法与使用 AMBA 互连的系统的其余部分进行通信。我被迫设计一个字长为 2 的幂(最小 8 位)的 RAM,所以我选择 512 位作为我的字长。我用零填充了未使用的部分(每个单词的位数从 301 到 512)(我本可以使用它们,但会使我的 HDL 算法更加复杂)。
正如@John Moon 在评论中建议的那样,我首先使用了 mmap() 并一次写入 32 位。为了在给定地址写入 32 位字,我使用了基址 + 偏移地址(如@Eugene Sh. 建议的那样),并且为了能够使用我的自定义架构使用内存中的数据,我制作了 RAM 双端口。现在一切正常。
关于c++ - 将图像位发送到嵌入在 FPGA 中的 HDL 生成的 RAM block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51770832/
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 去年关闭。
你可能知道 Verilog 中的“output reg”,非常有用的功能。 但在 Chisel 中我找不到如何做类似的事情。当我需要寄存器输出时,我应该这样做: package filter impo
你可能知道 Verilog 中的“output reg”,非常有用的功能。 但在 Chisel 中我找不到如何做类似的事情。当我需要寄存器输出时,我应该这样做: package filter impo
我总是使用默认分配来构建我的设计,因为它使我的代码行数更少并且我认为更具可读性。但是,我了解到默认分配有时会很麻烦。如果没有足够的设计空间,工具(Vivado、ISE)可以移除那部分。我的意思是默认赋
我一直有点想制作自己的微处理器..我读过 How can I make my own microcontroller? . 我多次尝试学习一些 Verilog 和 VHDL。但对于我的一生来说,我就是
大家,只是一个关于如何修复以下 Verilog 代码的简单问题,我不断收到错误。有什么建议吗? module bcd_to_seven_seg( B, S); input wire [3:0]B; o
我是一名自学成才的嵌入式开发人员。我主要使用用 C 和 ASM 编程的 AVR,但我也涉足过其他系统。我希望转向更复杂的设备,如 CPLD 和 FPGA,但我不知道从哪里开始。所以我的一个半问题是:
Chisel3 HDL语言是否可以进行形式验证? 如果是,是否有开源软件可以做到这一点? 我知道我们可以使用 Yosys 进行 verilog 形式验证,但是使用 chisel ? 最佳答案 Spac
如何在 HDL 中使用数组(代表总线)? 例如,我有以下代码: /** * 16-bit bitwise And: * for i = 0..15: out[i] = (a[i] and b[i]
我有 2 个模块使用相同的时钟但在不同的文件中,当我在模块 B 中采样来自模块 A 的信号时,在波形仿真中它没有像它应该的那样在一个时钟周期后获得样本,它表明是同一上升沿的样本(适合异步实例化的行为)
我找到了两个不同的来源,它们以两种不同的方式解释了 Verilog HDL 中的惯性延迟。 1) 第一个表示任何短于指定延迟的输入信号都将被忽略。 2) 第二个表示,如果其中一个输入发生变化,输出信号
这是我运行的代码,它不生成输出 HDL 文件: from pygears import gear from pygears.typing import Ufixp, Uint from pygears
假设您正在实现一个带有 cpu、ram、rom 和 mmu 的简单 SoC,以将 ram 和 rom 映射到 cpu 的地址空间。在实例化不同的组件时,这样做会更有意义: ram 和 rom 在 mm
此代码是一个按钮防抖器。但我不明白为什么有两个人字拖: reg PB_sync_0; always @(posedge clk) PB_sync_0 <= ~PB; // invert PB to
看起来快要工作了,只是在第 7 行显然搞砸了? /** * 4-way demultiplexor. * {a,b,c,d} = {in,0,0,0} if sel==00 *
也许这很简单,但我不能简单地找到如何在 Chisel 中获取 UInt() 值的位大小? 我知道如何通过声明设置尺寸: val a = UInt(INPUT, 16) 但是要获得“a”大小,是否有类似
该项目旨在构建一个程序计数器。 具体说明如下: // This file is part of www.nand2tetris.org // and the book "The Elements of
这是一个受此问答对启发的问题:call questa sim commands from SystemVerilog test bench 这些问题询问 Verilog 代码如何控制执行模拟器 (Qu
always 关键字(不是 always @ block )和 之间有什么区别Verilog HDL 中的forever 关键字? always #1 a=!a; forever #1 a=!a; 这
我使用 vi 作为编辑器在 Verilog 中编写了一个模块,现在我想测试它。如果我没有董事会,我有什么选择?我怎样才能给我的模块输入?我在哪里可以看到结果?顺便说一下,我可以访问 VCS。 谢谢。
我是一名优秀的程序员,十分优秀!