数字系统设计与Verilog HDL 下载本文

基于Quartus II进行EDA设计开发的流程 p26

设计一个半加器

p27

设计一个全加器

连接好的全加器原理图f_adder.bdf

习 题

3-1 基于Quartus II软件,用D触发器设计一个2分频电路,并做波形仿真,在此基础上,设计一个4分频和8分频电路,做波形仿真。 。 3-2 基于Quartus II软件,用7490设计一个能计时(12小时)、计分(60分)和计秒(60秒)的简单数字钟电路。设计过程如下:

(1)先用Quartus II的原理图输入方式,用7490连接成包含进位输出的模60的计数器,并进行仿真,如果功能正确,则将其生成一个部件;

(2)将7490连接成模12的计数器,进行仿真,如果功能正确,也将其生成一个部件; (3)将以上两个部件连接成为简单的数字钟电路,能计时、计分和计秒,计满12小时后系统清0重新开始计时。

(4)在实现上述功能的基础上可以进一步增加其它功能,比如校时功能,能随意调整小时、分钟信号,增加整点报时功能等。

第4章 基于宏功能模块的设计

8位有符号乘法器电路 功能仿真波形 p31

模24方向可控计数器电路

lpm_counter计数器功能仿真波形

锁相环电路

功能仿真波形 习 题

4.1 采用Quartus II软件的宏功能模块lpm_counter设计一个模为60的加法计数器,进行编译和仿真,查看仿真结果。

4.2 采用Quartus II软件的宏功能模块lpm_rom,用查表的方式设计一个实现两个8位无符号数加法的电路,并进行编译和仿真。

4.3 先利用LPM_ROM设计4位×4位和8位×8位乘法器各一个,然后用Verilog语言分别设计4位×4位和8位×8位乘法器,比较两类乘法器的运行速度和资源耗用情况。

4.4 用数字锁相环实现分频,假定输入时钟频率为10MHz,想要得到6MHz的时钟信号,试用altpll宏功能模块实现该电路。

第5章 Verilog HDL设计初步

5.2 Verilog设计举例

【例1】4位全加器

module adder4(cout,sum,ina,inb,cin); output[3:0] sum; output cout;

input[3:0] ina,inb; input cin;

assign {cout,sum}=ina+inb+cin; endmodule p36

Verilog程序的特点

(1)Verilog程序是由模块构成的。每个模块的内容都嵌在module和endmodule两个关键字之间;每个模块实现特定的功能;模块是可以进行层次嵌套的。

(2)每个模块首先要进行端口定义,并说明输入和输出口(input、output或inout),然后对模块功能进行描述。

(3)Verilog程序书写格式自由,一行可以写几个语句,一个语句也可以分多行写。 (4)除了endmodule等少数语句外,每个语句的最后必须有分号。

(5)可以用 /*??*/ 和 //?? 对Verilog程序作注释。好的源程序都应当加上必要的注释,以增强程序的可读性和可维护性。 p37

Verilog 模块的模板

module <顶层模块名> (<输入输出端口列表>); output 输出端口列表; //输出端口声明 input 输入端口列表; //输入端口声明 /*定义数据,信号的类型,函数声明*/ reg 信号名; //逻辑功能定义

assign <结果信号名>=<表达式>; //使用assign语句定义逻辑功能 //用always块描述逻辑功能 always @ (<敏感信号表达式>) begin

//过程赋值

//if-else,case语句

//while,repeat,for循环语句 //task,function调用 end

//调用其他模块

<调用模块名module_name > <例化模块名> (<端口列表port_list >); //门元件例化

门元件关键字 <例化门元件名> (<端口列表port_list>); endmodule p38

习 题

5.1 用Verilog设计一个8位加法器,并进行综合和仿真,查看综合结果和仿真结果。 5.2 用Verilog设计一个8位计数器,并进行综合和仿真,查看综合结果和仿真结果。