- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经在一个 VHDL 项目上工作了几个星期,并且在功能方面一切都进行得非常顺利。我可以对我的 DE0-nano FPGA 开发板进行仿真和编程,以检查我正在做的事情是否有效,并且确实有效。但是,随着项目的快速扩展,我开始担心源代码的可读性。
就我的经验而言,我是一名电子工程专业的大学生,并且已经学习了许多电子类(class),但我对 VHDL 完全是个菜鸟。 (虽然我可以说我对 VHDL 的了解在过去几周里有了很大的增长)
问题:
我的问题是我有几个组件,我想将它们的端口单独映射到不同的高级实体中。假设您有一个 adder.vhd,那么我想提供来自operandA.vhd 的操作数A 和来自operandB.vhd 的操作数B,这意味着我想将adder.vhd 的端口A 映射到operandA.vhd,并将 adder.vhd 的端口 B 放入operandB.vhd。
我目前使用的解决方案是按照实体的层次顺序映射信号,如果operandB.vhd 完全隐藏在operandA.vhd 之外的另一个级别,我将信号一直映射到最高级别的实体这是必需的,然后返回到 adder.vhd,在单个端口映射中同时指定端口 A 和 B,我认为这是必需的。
但是,我发现这个解决方案非常困惑,因为它在我的高级实体中积累了仅用于路由目的的信号。更重要的是,继续 adder.vhd 类比,我希望几个实体提供操作数 A 或 B(在不同的时间,我不会在相同的输入端口上驱动不同的值)所以应用当前的解决方案意味着我'也会有许多近乎重复的作业。
还有其他解决方案吗?我找不到任何关于此的文档,我担心这是语言的硬约束,但我可能不知道嘎嘎,因为我刚刚开始 VHDL。
这也可能是我的设计错误,因为我更习惯于实际的电子设计而不是 VHDL 电路描述。将一个组件的端口连接到一堆其他不同的组件是很自然的,但可能不是 VHDL 的工作方式。
说明性框图:
我目前在做什么:http://i.stack.imgur.com/CJVjg.gif
我想做的事:http://i.stack.imgur.com/hrNwF.gif
示例代码:
-- ********************************************
--
-- TOP-LEVEL ENTITY, in a file topLevel.vhd
entity topLevel is
port
(
-- Any ports, not useful for the problem at hand
);
end entity topLevel ;
architecture topLevel_Architecture of topLevel is
-- HERE : I have to accumulate signals just to get my data from the two subEntityA & B to computeFromAB.
--
-- I can't just map subEntityA and subEntityB as low-level entites into computeFromAB, as they provide data
-- that I need elsewhere in the circuit. Well, I could do that but then I'd still have to get the "otherSignalFromX"
-- through the same method.
--
-- I'd rather directly map SEPARATELY (if that's possible)
-- - operandA & operandB into computeFromAB
-- - otherSignalFromA & otherSignalFromB into topLevel
-- The signals I use to get my data from subEntityA and subEntityB to computeFromAB
SIGNAL operandA : std_logic_vector(7 downto 0) := ( others => '0' ) ;
SIGNAL operandB : std_logic_vector(7 downto 0) := ( others => '0' ) ;
-- Other signals that I do not need to get to computeFromAB
SIGNAL otherSignalFromA : std_logic ;
SIGNAL otherSignalFromB : std_logic ;
begin
-- PORT MAP : subEntityA.vhd
subEntityA : entity work.subEntityA
PORT MAP(
-- The first signal I'd like to get through to computeFromAB
operandA => operandA,
-- Other signals
otherSignalFromA => otherSignalFromA
);
-- PORT MAP : subEntityB.vhd
subEntityB : entity work.subEntityB
PORT MAP(
-- The second signal I'd like to get through to computeFromAB
operandB => operandB,
-- Other signals
otherSignalFromB => otherSignalFromB
);
-- PORT MAP : computeFromAB.vhd
computeFromAB : entity work.computeFromAB
PORT MAP(
-- The "useful" signals
operandA => operandA,
operandB => operandB
);
-- PROCESSES, ETC, OF TOPLEVEL ENTITY
end topLevel_Architecture ;
-- ********************************************
--
-- OPERAND A ENTITY, in a file subEntityA.vhd
entity subEntityA is
port
(
-- The first signal I'd like to get through to computeFromAB
operandA : OUT std_logic_vector(7 downto 0)
-- Other signals
otherSignalFromA : OUT std_logic ;
);
end entity subEntityA ;
-- ARCHITECTURE, PROCESSES OF subEntityA
-- ********************************************
--
-- OPERAND B ENTITY, in a file subEntityB.vhd
entity subEntityB is
port
(
-- The second signal I'd like to get through to computeFromAB
operandB : OUT std_logic_vector(7 downto 0)
-- Other signals
otherSignalFromB : OUT std_logic ;
);
end entity subEntityB ;
-- ARCHITECTURE, PROCESSES OF subEntityB
-- ********************************************
--
-- COMPUTATION FROM OPERANDS A & B ENTITY, in a file computationFromAB.vhd
entity computeFromAB is
port
(
operandA : IN std_logic_vector(7 downto 0) ;
operandB : IN std_logic_vector(7 downto 0)
);
-- ARCHITECTURE, PROCESSES OF computeFromAB
最佳答案
为什么不直接包装实体 一个 + 乙 + 计算来自Ab 共同创造实体AB .然后路由其他信号A 和 其他信号B 通过顶层进入实体C .这个想法是创建整洁的子模块来包装和隐藏其他模块。如果您以后需要复制一些逻辑,这也很有帮助。
可能是信号和设计变得有点复杂,但这通常表明最初的想法过于复杂。因此,每当您对自己的代码感到困惑时,就是时候回到笔和纸上,重新思考您实际想要完成的事情;)
同样在某些时候,您不再确定某些信号来自哪里以及应该去哪里。那是你诅咒你的信号命名约定的时候——如果你有的话——并想出一些更合理的东西。
将 100 多个模块添加到您的顶级实体中,您就会开始了解顶级集成商在项目中的感受以及为什么其中一些人有严重的心理问题。
关于port - VHDL - 端口映射 - 将组件的不同端口映射到不同的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35973784/
我正在学习网络和套接字,但有些东西我不明白。我经常听说“TCP端口”但我认为端口与应用层有关(例如 HTTP 服务器为 80)。那你为什么不说“应用程序端口”呢?为什么端口似乎与 TCP 层相关联(它
配置 Nginx 以允许像这样的 DOMAIN:PORT 请求的正确方法是什么: http://example.com:8080/?a=xxx&b=yyy&c=zzz over TCP or UDP
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
这是我的 nginx.conf,适用于 https。 如果有人输入 HTTP://dev.local.org:3002,我该如何重定向到 HTTPS://dev.local.org:3002? 这个
我在这方面需要一点帮助,而我对这方面的 RegEx 知识有点欠缺。 我有一个代理列表,我正在尝试解析该列表并将 IP 和端口号与字符串分开。 正在读取的字符串看起来像这样。(示例 1) 121.121
我正在尝试制作一个 Firefox 扩展。我需要与后台脚本 (main.js) 交换数据,所以我尝试使用端口,但它不起作用。 //Content.js self.port.on("alert",fun
我正在学习教程,他们使用命令[[ -z "$PORT" ]] && export PORT=8080我不完全明白它在做什么。我对 bash 命令的了解非常基础,所以我什至不知道用什么谷歌来解决这个问题
我已经阅读了数据表和谷歌,但我仍然不明白。 就我而言,我将 PIC18F26K20 的 PIN RC6 设置为 INPUT 模式: TRISCbits.TRISC6 = 1; 然后我用 PORT 和
我想知道是否可以将公共(public) IP 端口(例如端口 80)映射到 Azure iaas VM 上的不同本地/私有(private) IP 端口(例如端口 81)。我相信这在旧门户中是可行的,
我有一个用 python-twisted 编写的客户端,它将 UDP 数据包发送到 IP aaa.bbb.ccc.ddd 的端口 1234,然后等待响应。我还有用 C-libuv 编写的 UDP 服务
我有一个使用弹性 IP 12.34.56.78 运行的 Amazon EC2 实例。我拥有一个域名 example.com,我已将其设置为指向 EC2 实例。我在 EC2 实例的端口 80 上运行 A
我正在尝试在 AWS Lightsail 上配置网站。我做的第一件事是在 中将端口号从 22 更改为 2200 /etc/ssh/sshd_config ,然后我像这样配置了简单的防火墙 sudo u
几天前才意识到 Docker 似乎绕过了我的 iptable 规则。我对 Docker 和 iptables 的经验并不令人难以置信。最近几天尝试了很多不同的东西。还看到最近的 docker 版本有很
我从他们的website 下载了零层使用以下命令: curl -s https://install.zerotier.com | sudo bash 每当我尝试使用 zerotier cli 时,都会
我是字符串操作的新手,只是试图替换列表中的值。 我试图修复的两个输入是 MCAFEE和 PORT O'BRIAN . 所以我跑 ucwords(strtolower($rawTitle)) .但现在我
我正在使用 SSH 访问我大学的 afs 系统。我喜欢使用 rmate(远程 TextMate),它需要 SSH 隧道,因此我在 .bashrc 中包含了这个别名。 alias sshr=ssh -R
当我使用 Control-C 退出“Heroku Open”(Heroku 工具栏服务器命令)时。我无法重新启动。我收到此错误: /vendor/bundle/gems/puma-2.14.0/lib
我正在发送这样的消息: self.port.emit("nodes_grubed", textNodesValues); 并想对此使用react: worker.port.on("nodes_grub
我正在尝试在此扩展中创建一个函数,该函数将打开具有给定网址的选项卡,并在该选项卡上使用给定文件名运行脚本。该功能大部分工作正常,只是我无法在主脚本和我在新选项卡上运行的脚本之间进行通信(我为此使用了
我在我的 .NET MVC 4 元素中使用 Bootstrap ,我使用 NuGet 导入 Bootstrap 我的元素,我有一个布局页面,我在这个页面中包含 Bootstrap 标签,我的索引页面正
我是一名优秀的程序员,十分优秀!