如何从用户 VHDL 获取多个输入
Posted
技术标签:
【中文标题】如何从用户 VHDL 获取多个输入【英文标题】:How to get multiple input from user VHDL 【发布时间】:2019-04-13 21:01:43 【问题描述】:我想通过连接到 FPGA 板的 GPIO 引脚的键盘从用户那里读取一个 6 位数字。这是我的代码的一部分:
signal kp_value :std_logic_vector( 3 downto 0);
signal kp_hit : std_logic ;
type arr is array (23 downto 0) of std_logic_vector;
signal num1 : arr;
begin
keypad_getInput: keypad port map(row, clk_50 , col , kp_hit, kp_value);
process(kp_hit)
begin
if kp_hit ='1' then
num1 <= num1 & kp_value;
end if ;
end process;
seg_display: seven_segments port map(num1,sevenseg);
我想继续从用户那里获取数字,直到它达到 24 位,然后在 7 段中的六个上显示它
我遇到了错误,可能是存储值的方式错误,请您帮帮我
【问题讨论】:
'我遇到了错误'——你遇到了什么错误? 【参考方案1】:您可能遗漏了您不想保留在 num
中的位,我假设您想向左移动
num1 <= num1(19 downto 0) & kp_value;
【讨论】:
你能解释一下这条线到底是做什么的吗? ,我的意思是什么值将存储在 num1(19 downto 0) 中? num(19 downto 0) 中存储的值存储前五次按键。赋值的结果会将最新的按键压入 num 的低 4 位。同时保留前五个。 如果我按下键 1 它将把它放在低 4 位然后对于第二个键,它会推动前一个键并将新键存储在低 4 位?仅来自此声明? 是的,有点像:例如(如果 8 位,即在这种情况下,'num' 仅存储两个键)(1.)'num' 的先前状态:00001111(2.)用户按下键 1001(3.)'num' 的下一个状态将是: 11111001 (4.) 用户按下键 0011 (5.) 'num' 的下一个状态将是:10010011以上是关于如何从用户 VHDL 获取多个输入的主要内容,如果未能解决你的问题,请参考以下文章
VHDL ERROR:Pack:2811 - 定向包装无法服从用户设计