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

p76

思考与练习

7.1 试编写求补码的Verilog程序,输入是带符号的8位二进制数。 7.2 试编写两个四位二进制数相减的Verilog程序。

7.3 有一个比较电路,当输入的一位8421BCD码大于4时,输出为1,否则为0。试编写出Verilog程序。

7.4 试编写一个实现3输入与非门的Verilog源程序。 p77

思考与练习

7.5 用Verilog语言设计一个类似74138的译码器电路,用Synplify软件对设计文件进行综合,观察RTL级综合视图和门级综合视图。

7.6 用Verilog语言设计一个功能类似74161的电路,用Synplify软件对设计文件进行综合,观察RTL级综合视图和门级综合视图。

7.7 用Verilog设计一个8位加法器,用Quartus II软件进行综合和仿真。 7.8 用Verilog设计一个8位计数器,用Quartus II软件进行综合和仿真。

第8章 数字设计的层次与风格 p79

Verilog设计的描述风格 结构(Structural)描述 行为(Behavioural)描述 数据流(Data Flow)描述 p80

在Verilog程序中可通过如下方式描述电路的结构 ◆ 调用Verilog内置门元件(门级结构描述) ◆ 调用开关级元件(晶体管级结构描述) ◆ 用户自定义元件UDP(也在门级) 8.2 结构(Structural)描述 p81

门级结构描述的2选1MUX

module MUX1(out, a, b, sel); output out;

input a, b, sel; not (sel_, sel); and (a1, a, sel_), (a2, b, sel); or (out, a1, a2); endmodule

p82

8.3 行为描述

就是对设计实体的数学模型的描述,其抽象程度远高于结构描述方式。行为描述类似于高级编程语言,当描述一个设计实体的行为时,无需知道具体电路的结构,只需要描述清楚输入与输出信号的行为,而不需要花费更多的精力关注设计功能的门级实现。 p83

行为描述的2选1MUX

module mux2(out, a, b, sel); output out;

input a, b, sel; reg out;

always @(a or b or sel) begin

if(sel) out = b; else out = a; end

endmodule

p84

8.4 数据流描述

数据流描述方式主要使用持续赋值语句,多用于描述组合逻辑电路,其格式为:

assign LHS_net=RHS_expression;

右边表达式中的操作数无论何时发生变化,都会引起表达式值的重新计算, 并将重新计算后的值赋予左边表达式的net型变量。 p85

数据流描述的2选1MUX

module MUX3(out, a, b, sel); output out;

input a, b, sel;

assign out = sel ? b : a; endmodule

p86

`include \

module add4_1(sum, cout, a, b, cin); output [3:0] sum; output cout;

input [3:0] a, b; input cin;

full_add1 f0(a[0],b[0],cin,sum[0],cin1); full_add1 f1(a[1],b[1],cin1,sum[1],cin2); full_add1 f2(a[2],b[2],cin2,sum[2],cin3); full_add1 f3(a[3],b[3],cin3,sum[3],cout); endmodule

结构描述的4位级连全加器 p87

module add4_2(cout,sum,a,b,cin); output[3:0] sum; output cout; input[3:0] a,b; input cin;

assign {cout,sum}=a+b+cin; endmodule

数据流描述的4位加法器 p88 习 题

8.1 Verilog支持哪几种描述方式,各有什么特点?

8.2 分别用结构描述和行为描述方式设计一个基本的D触发器,并进行综合。 8.3 分别用结构描述和行为描述方式设计一个JK触发器,并进行综合。 8.4 试编写同步模5计数器程序,有进位输出和异步复位端。 8.5 编写4位串/并转换程序。 8.6 编写4位并/串转换程序。 8.7 编写4位除法电路程序。