这是关于《数字逻辑实验》的第一次正式实验,“点亮数字人生”的总结。这是一篇搬运过来的旧博客,进行了一定的修改。


实验指导书截图

数字逻辑实验箱

注意事项

电路调试提示

实验步骤

1. 在老师处获取一个实验箱

没错,就是刚才你们看到的那个箱子。里面肯定还配芯片、电源、连接线、等等,请收好。以后作业就靠它了。今年有两个班改版了(包括我们班),收到的应该是积木形状的。

数字逻辑实验箱新版,由积木块构成

2. 安装必要的软件

2.1 在电脑上下载Quartus II

一位善良的同学提供了官网下载链接。

因为他登录之后发现下载只不过是普通的网址,于是便记录下来,这样便可避免登录,还可使用下载软件提速、断点续下。

我把Quartus-lite-16.1.0.196-windows.tar的资源放在百度网盘上了:
链接:http://pan.baidu.com/s/1pLHdq6R 密码:cyy4

至于其他版本呢……有同学是在北邮人上下载了9.0版和13版。13版同样没有什么问题,但9.0版需要破解,否则会缺少.pof文件。在虚拟机上安装的同学还会遇到驱动问题,此事待会再谈。

2.2 开始安装Quartus II

我在Windows10上安装了Quartus-lite-16.1.0.196-windows。在安装过程中,我遇到了这样的问题:

因为所需空间不足而报错

面临这种情况,其实只需要选中原本的软件和MAX II/V两个版本就行,盘不会满的。模拟需要安装那个免费版的ModelSim,但是单纯的烧录不需要。以后如果你发现自己装的少了,还可以用那个安装包去更新。

如果使用的是破解软件或者在虚拟机上安装,还可能会出很多其他的问题,不过我这里差不多这样就装好了。

3. 开始建项目、写程序、绑引脚

具体项目建立过程书上都有,不再赘述。

这次的程序代码也是从书上抄的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

entity digital_7 is
port(
key:in std_logic_vector(3 downto 0);
display:out std_logic_vector(6 downto 0);
display_4:out std_logic_vector(3 downto 0)
);
end digital_7;

architecture bhv of digital_7 is
begin
display_4<=key;

process(key)
begin
case key is
when "0000" => display <= "1111110"; --0
when "0001" => display <= "0110000"; --1
when "0010" => display <= "1101101"; --2
when "0011" => display <= "1111001"; --3
when "0100" => display <= "0110011"; --4
when "0101" => display <= "1011011"; --5
when "0110" => display <= "0011111"; --6
when "0111" => display <= "1110000"; --7
when "1000" => display <= "1111111"; --8
when "1001" => display <= "1110011"; --9
when "1010" => display <= "1110111"; --10
when "1011" => display <= "0011111"; --11
when "1100" => display <= "1001110"; --12
when "1101" => display <= "0111101"; --13
when "1110" => display <= "1001111"; --14
when "1111" => display <= "1000111"; --15
when others => display <= "0000000"; --others
end case;
end process;
end bhv;

下面是代码截图。(下图的程序是干什么的,我已经想不起来了。)

不知道是干什么用的代码截图

写完代码之后,绑定引脚,编译。

绑定引脚并编译

这之后可以把USB线插到电脑上,进行设置,准备下载。

硬件连接设置

有时候在硬件连接那一步会出问题。如果插电以后显示驱动未安装,就需要到Altera的安装目录里找到driver里面的驱动安装之。在虚拟机Windows10,Quartus 9.0环境下,有时候可能会安装不了驱动(安全警报),可以尝试进入Win10调试模式后再安装。

4. 下载

而在这一切都做完之后,我迫不及待地点击了Programmer,想把程序下载到硬件。

结果这个界面上什么都没有

结果我发现找不到.pof文件,尝试烧录,也毫无效果。而且,9.0版本软件如果不能破解,好像就没法编译出.pof文件,无法输出程序。

我在这个网站上找到了相关的建议(虽然既没图,又和我们用的器件不一样):

Quartus Prime Lite » Tools » Programmer (or double-click Program Device in the task list)

  • Click Hardware Setup, and select USB-Blaster [USB-0]
  • Click Add File, and select your SRAM object file (.sof) in the output_files directory
  • Click Start
  • Save as example1.cdf, so it opens with these settings next time
  • Great! We did it, the design is now on the FPGA (until we remove the power)

于是,我在工程目录下的output_files文件夹找到了这个vhd1.pof,加载进去,就能下载了。

加载了正确的pof之后的Programmer

我猜测,如果没有指定正确的pof文件,编译只会把空的那个文件烧上去,所以无效。

5. 运行

之后的事情就真的很简单了。我的机器必须在烧好之后重开一次电源键,否则程序无法正常显示。下面两张图是我的电路完成图。

我搭的电路,正在显示9

电路和线全貌

下面两张图是从同学的朋友圈里找到的普通箱子的完成图,因为时间过去太久,很难考证到底是谁的图了,非常感谢他们的图,侵删。

从同学那里抄来的完成图

从同学那里抄来的完成图之二

如果在下载的时候没开电源,可能会在Quartus主窗口中报错"can't access JTAG chain"(上课时就有同学遇到这种故障),报这种错误的原因可能包括

  • 下载有时受环境影响很大。比如,在嘈杂的环境下就可能下载不进去。
  • 电源按钮没有打开或者是工作模式没有跳到"RUN”
  • 电路板问题(电源,负载,虚焊等)
  • FPGA器件上的JTAG相关引脚出现故障
  • USB-Blaster坏了
  • 10针JTAG线缆没有压制好
  • JTAG的PCB不正确
  • ……

大多时候原因就是没开电源,打开电源就可以往上烧了。

实验总结

最后还是很开心的。看到自己按了开关之后数字就能变化,开心。但是紧接下来就又要有加法器的实验了,希望自己仍能存活下来。(2018.7.14 UPDATE:我还活着。)