如何从用户 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 - 定向包装无法服从用户设计

VHDL触发器复位不同于0

如何从java控制台获得用户输入?

如何从java控制台获得用户输入?

如何从具有多个视图的 ListView 中的 EditText 获取文本?

如何从单个输入中获取多个文件输入