【发布时间】:2016-07-07 00:13:21
【问题描述】:
我在学校熟悉了一点 Verilog,一年后,我买了一块 Basys 3 FPGA 板。我的目标是学习 VHDL。
我一直在阅读一本名为“Free Range VHDL”的免费书籍,它对理解 VHDL 语言有很大帮助。我还搜索了包含 VHDL 代码的 github repos 以供参考。
我最关心的是顺序执行和并发执行之间的区别。我理解这两个词的含义,但我仍然无法想象为什么我们可以将“过程”用于组合逻辑(即七段解码器)。我已经将我的七段解码器实现为并发语句的条件分配。 如果我使用进程和switch语句来实现解码器会有什么区别?我不理解组合逻辑中进程的顺序执行这个词。如果是顺序机——状态机,我会理解的。
有人能解释一下这个概念吗?
这是我的七段解码器代码:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity hex_display_decoder is
Port ( D: in STD_LOGIC_VECTOR (3 downto 0);
SEG_OUT : out STD_LOGIC_VECTOR (6 downto 0));
end hex_display_decoder;
architecture dataflow of hex_display_decoder is
begin
with D select
SEG_OUT <= "1000000" when "0000",
"1111001" when "0001",
"0100100" when "0010",
"0110000" when "0011",
"0011001" when "0100",
"0010010" when "0101",
"0000010" when "0110",
"1111000" when "0111",
"0000000" when "1000",
"0010000" when "1001",
"0001000" when "1010",
"0000011" when "1011",
"1000110" when "1100",
"0100001" when "1101",
"0000110" when "1110",
"0001110" when "1111",
"1111111" when others;
end dataflow;
谢谢,
杰克·赫拉迪克
【问题讨论】:
-
参见 IEEE Std 1076-2008 11.6 并发信号赋值语句 “并发信号赋值语句代表一个等效的过程语句,它为信号赋值。”其他并发语句部分将描述如何为模拟/综合详细说明它们。所有精心设计的模型都通过执行顺序语句进行模拟。如何需要了解 VHDL 的仿真周期。 Free Range VHDL 可能不是足够的资源。如果您声称您显示的代码是函数,请考虑Code Review 站点。
-
谢谢!我不知道有代码审查页面。
-
这可能是代码审查的主题,假设 A) 代码有效 并且 B) 代码不是假设的或不完整的任何方式
标签: concurrency parallel-processing vhdl execution sequential