VHDL-显示0-9之间的数字,暂停1秒

VHDL-显示0-9之间的数字,暂停1秒,vhdl,modelsim,Vhdl,Modelsim,我必须用VHDL编写程序,在“屏幕”上显示0-9之间的数字,暂停1秒(因此基本上时钟为0-9),此外,我还必须签入ModelSim,这对我来说非常困难。我知道我不应该请求这样的帮助,但我只需要到我的大学去。 我是vhdl的初学者,我从未学过,所以任何线索/解决方案都很好。 我知道我必须使用这样的东西: LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ... SIGNAL countSek :

我必须用VHDL编写程序,在“屏幕”上显示0-9之间的数字,暂停1秒(因此基本上时钟为0-9),此外,我还必须签入ModelSim,这对我来说非常困难。我知道我不应该请求这样的帮助,但我只需要到我的大学去。 我是vhdl的初学者,我从未学过,所以任何线索/解决方案都很好。 我知道我必须使用这样的东西:

LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
...
SIGNAL countSek : STD_LOGIC_VECTOR(24 DOWNTO 0);
...
BEGIN
...
-- count 1 second
PROCESS (Clock)
BEGIN
IF (Clock'EVENT AND Clock = '1') THEN
countSec <= countSek + '1';
END IF;
END PROCESS;

PROCESS (Clock)
BEGIN
IF (Clock'EVENT AND Clock = '1') THEN
IF (Resetn = '0') THEN
licznik <= (OTHERS => '0');
ELSIF (countSek = 0) THEN
counter <= counter + '1';
END IF;
END IF;
END PROCESS;
ieee库;
使用ieee.std_logic_1164.all;
使用ieee.std_logic_unsigned.all;
...
信号计数SEK:STD_逻辑_向量(24至0);
...
开始
...
--数一秒
进程(时钟)
开始
如果(时钟事件和时钟='1'),则

countSec我会给你一些提示或想法,因为1)这里没有家庭作业,2)我不完全理解你的任务

因此,我对您任务的理解是:

制作一个计数器,从0到9重复计数,延迟1秒

因此,首先,你必须弄清楚你的1秒是如何获得的。 就您的目的而言,只有一种方法可以进行时间管理,那就是扔掉系统的时钟。例如,您的芯片/板/FPGA以50MHz时钟运行。一秒钟需要多少个时钟?很明显,这将是5000万个循环,所以你必须建立一个计数器,它将计数到5000万,然后发送一个信号(并将自身设置为0,然后再次开始计数)。这样,您就有了计数器模块。 这里的问题是,我怀疑ModelSim能否(由于免费版本)计数到5000万,因为它通常会在一段时间后停止模拟。因此,出于模拟目的,您可以将计数器设置为最多计数,例如,10

因此,您的计数器进程可能看起来像(!!!没有语法检查,没有完成!!!):

我认为这应该说明问题

附言:我敦促你阅读一些关于vhdl设计的书,以理解信号和变量之间的区别,如何设计实体,if和where语句之间的区别。对…的尊重是什么。。。生成并用于。。。循环等。。。我自己就知道。VHDL之前,我可以用C、C++、java、Haskel等编程,但是VHDL不是编程!如果您是从软件方面来学习VHDL的,那么您应该澄清硬件建模是不同的,您必须以不同的方式思考


感谢您的回答!我会尝试这些提示,听取你的建议,然后我会给出反馈。是的,我是java程序员,所以我可能会像你说的那样用wrog的方式看VHDL,我可以帮你
...
PROCESS (Clock)
BEGIN
IF (Clock'EVENT AND Clock = '1') THEN
    counter <= counter + '1';
    if( counter = SOME_NUMBER ) then
        SIGNAL_COUNTED <= '1';
        counter <= "0";
    else
        SIGNAL_COUNTER <= '0';
    end if;
END IF;
END PROCESS;
PROCESS (SIGNAL_COUNTED)
BEGIN
if(rising_edge(SIGNAL_COUNTER)) then
...