目录
HDLbits网站如下
Problem sets - HDLBits (01xz.net)
Problem 0:Getting Started
欢迎来到HDLbits!
刚开始学习数字逻辑电路设计可能会让人不知所措,因为你需要学习新的概念、一种新的硬件描述语言(比如:Verilog)、一些新的软件,通常还需要一块FPGA开发板。好在HDLbits 提供了一种通过单击“Simulate”(仿真)来练习设计和调试简单电路的方法。
设计电路需要以下步骤:编写HDL(Verilog)代码,编译代码以生成电路,然后仿真电路的功能并修复错误。
编写代码
编写代码最简单的方法是在下面的代码框中进行。因为网页已经为您生成了部分代码,比如模块的输入、输出端口。
单击Simulate以编译和仿真你的设计。
编译(逻辑综合)
你的代码会通过Altera Quartus 的综合器编译以生成电路。Quartus 会生成综合信息。单击Show Quartus messages 来显示/隐藏它们。通过这些信息可以进行修改来减少代码中的警告,但是有的警告可以忽略。
仿真
你编译的电路通过仿真来检测其功能否正常。HDLbits使用Modelsim同时仿真你的电路和参考解决方案,然后比较两者的输出。仿真报告会返回两类信息:
首先,它会报告你的电路的输出是否与参考电路的输出吻合(没有 mismatch)或者出现多少mismatch。Mismatch代表某一时刻两者的输出并不一致。
其次,它会产生电路运行测试向量时的输出时序图。仿真波形图分为三部分:“输入”、“你的电路的输出”、“参考电路的输出”。在一个正确的电路中,你的电路的输出与参考电路的输出是一样的。“Mismatch”信号提示你哪里出现了不匹配。
值得注意的是,不要修改题目给定的模块以及端口名称,否则会造成仿真错误!
最终状态
如果你的电路是正确的,你将会看到Status: Success!当然还会有别的几种状态:
- Compile Error — 电路编译失败
- Simulation Error — 电路编译成功但是仿真出现错误。
- Incorrect — 电路成功编译和仿真,但是输出结果和参考结果不同。
- Success! — 电路正确!
你可以在 User Stats - HDLBits页面查询自己的状态以及完成度在所有参与用户中的排名。
问题描述:
我们将从一小个HDL题目中熟悉HDLbits 的界面。这是本次练习中你需要构建的电路:
构建一个没有输入、有一个输出的电路。输出端口需要始终驱动逻辑1(即逻辑高)。
期望的答案长度:一行
模块的端口已经给出
Solution:
module top_module( output one );
// Insert your code here
assign one = 1'b1;
endmodule
1在数字逻辑中代码逻辑高,0代表逻辑低。
所以 assign one =1'b1; 即可
但是出现了一个警告(在本题中可忽略):
Warning (13024): Output pins are stuck at VCC or GND
此警告表示输出端口永远不会改变。如果输出端口不应该是常量的话,这表明已经出现了错误。检查导致被分配的值不会改变的原因(比如assign a = x & ~x; a始终为0)
Problem 1:Zero
问题描述:
构建一个没有输入、有一个输出的电路。输出端口需要始终驱动逻辑0。
现在您已经解决了上一个问题,让我们看看您是否可以在没有提示的情况下完成一个简单的问题。
期望的答案长度:一行
Solution:
module top_module(
output zero
);// Module body starts after semicolon
assign zero = 1'b0;
endmodule
Hints:对于Quartus,输出端口默认赋值为0,所以这题比上一题还简单。
这是我第一次尝试写博客,翻译得比较僵硬,希望以后能好一点并且坚持下去。