文档库 最新最全的文档下载
当前位置:文档库 › Verilog试题 A答案

Verilog试题 A答案

Verilog试题 A答案
Verilog试题 A答案

北京航空航天大学

2011 ~2012 学年第二学期 数字EDA 期末考试试卷

( 2012 年 5 月 23 日)

班级:__________;学号:______________;姓名:__________________;成绩:___________

注意事项:1、填空题与选择题直接在试题上作答

2、设计题在答题纸上作答

正题:

一、填空题(共30分,每道题3分)

1. 写出表达式以实现对应电路的逻辑功能。

F

2. 根据图中输入输出关系将Verilog

模块定义补充完整,其中信号A 为5比特宽度,其余信号为1比特宽度。 A 宽

3. IEEE 标准的硬件描述语言是 verilog HDL 和 VHDL 。

4. 你所知道的可编程逻辑器件有(至少两种): FPGA, CPLD, GAL, PAL (任写其二) 。

5. 假定某4比特位宽的变量a 的值为4’b1011,计算下列运算表达式的结果

6. Verilog 语言规定了逻辑电路中信号的4种状态,分别是0,1,X 和Z 。其中0表示低电平状态,1表示高电平状态,X 表示 不定态(或未知状态) ,Z 表示 高阻态 。

assign F= E ^ ( (A&B) | (!(C&D)))

module tblock( A,B,C ) ; output [4:0] A;

input B;

inout C; …… //省略了功能描述

endmodule //模块结束 &a = 1’b0 ~a = 4’b0100 {3{a}} = 12’b101110111011 {a[2:0],a[3]} = 4’b0111 (a<4’d3) || (a>=a) = 1’b1 !a = 1’b0

7. 下面两段代码中信号in ,q1,q2和q3的初值分别为0,1,2和3,那么经过1个时钟周期后,左侧程序中q3的值变成 0 ,右侧程序中q3的值变成 2 。

8. Verilog 语言规定的两种主要的数据类型分别是 wire(或net) 和 reg 。程序模块中输入,输出信号的缺省类型为 wire(或net) 。

9. 一个大型的组合电路总延时为100ns ,采用流水线将它分为两个较小的组合电路,理论上电路最高工作频率可达 20 MHz 。

10. 块语句有两种,一种是begin-end 语句,通常用来标志 顺序 执行的语句;一种是fork-join 语句,通常用来标志 并行 执行的语句。

二、选择填空题 (共30分,每道题3分)。

1. inout 端口可以定义成下列哪种数据类型 ( B )。

A 、reg 类型

B 、net 类型

C 、reg 或net 类型

D 、整数类型

2. 下列数组描述中不正确的代码是( D )。 A 、integer cou [7:0] ; B 、reg bool [16:0] ; C 、integer mat [4:0][0:127] ; D 、reg [8*8:1] carray_value;

3. 下列描述中采用时钟正沿触发且reset 异步下降沿复位的代码描述是 ( C ) A 、always @(posedge clk, negedge reset) if(reset)

B 、always@(posedge clk, reset) if (!reset)

C 、always @(posedge clk, negedge reset) if(!reset)

D 、always @(negedge clk, posedge reset) if (reset)

4. 下列代码描述中,不能产生时序逻辑的( A ) A 、always (*) begain if (a&b) rega=c; else rega=0; end

B 、always (*) begain

always @(posedge clk) begin q1 = in; q2 = q1; q3 = q2; end always @(posedge clk) begin q1 <= in; q2 <= q1; q3 <= q2; end

if (a&b) rega=c;

y=rega;

end

C、always @(a)

begain

Case(a)

2’b00: out=4’b0001;

2’b01: out=4’b0010;

2’b10: out=4’b0100;

endcase

end

5.在高速系统设计中,下列哪种优化方案的目的不是为了提高系统的工作频率(D )A、流水线 B、树型结构 C、迟置信号后移 D、资源共享

6.状态机的编码风格包括一段式、两段式和三段式,下列描述正确的是(C )

A、一段式寄存器输出,易产生毛刺,不利于时序约束;

B、二段式组合逻辑输出,不产生毛刺,有利于时序约束;

C、三段式寄存器输出,不产生毛刺,有利于时序约束;

D、所有描述风格都是寄存器输出,易产生毛刺,有利于时序约束。

7.下列描述代码可综合的是(C )

A、fork… join

B、assign/deassign

C、if…else和case

D、repeat 和forever

8.关于过程块以及过程赋值描述中,下列正确的是(A )

A、在过程赋值语句中表达式左边的信号一定是寄存器类型;

B、过程块中的语句一定是可综合的;

C、在过程块中,使用过程赋值语句给wire赋值不会产生错误;

D、过程块中时序控制的种类有简单延迟、边沿敏感和电平敏感。

9.关于函数的描述下列说法不正确的是(B )

A、函数定义中不能包含任何时序控制语句;

B、函数至少有一个输入,包含任何输出或双向端口;

C、函数只返回一个数据,其缺省为reg类型;

D、函数不能调用任务,但任务可以调用函数。

10.Verilog语言与C语言的区别,不正确的描述是(C )

A、Verilog语言可实现并行计算,C语言只是串行计算;

B、Verilog语言可以描述电路结构,C语言仅仅描述算法;

C、Verilog语言源于C语言,包括它的逻辑和延迟;

D、Verilog语言可以编写测试向量进行仿真和测试。

三、(10分)试设计一个3/8译码器,规定模块定义为module Decoder(Out,In,En),其中Out 为译码器输出,In为译码器输入,En为译码使能输入。要求:写出3/8译码器Verilog HDL

设计程序并注释;

标准答案1:

module decoder(Out,In,En); (2分)

output [7:0] out;

input [2:0] in;

input en; //IO定义(3分)

assign out = (en==0)?0:1’b1<

否则输出无效电平*/(5分)

endmodule

标准答案2:

module decoder(Out,In,En); (2分)

output [7:0] out;

input [2:0] in;

input en; //IO定义(3分)

reg [7:0] out;

always @ (In or En)

begin

if(En == 0) //若En为低电平,3输出无效电平(2分)

Out = 8’b0;

else //若En为高电平,3/8译码(3分)

case(in)

3’b000: Out = 8’b00000001; //0

3’b001: Out = 8’b00000010; //1

3’b010: Out = 8’b00000100; //2

3’b011: Out = 8’b00001000; //3

3’b100: Out = 8’b00010000; //4

3’b101: Out = 8’b00100000; //5

3’b110: Out = 8’b01000000; //6

3’b111: Out = 8’b10000000; //7

endcase

end

四、(20分)试使用Verilog HDL设计一个10进制计数器,规定模块定义为module count10(out,clr,clk),其中clk为时钟输入,clr为同步清零输入,低电平有效,out为计数器输出。要求

(1)写出10进制计数器Verilog HDL设计程序并注释;

(2)写出10进制计数器Verilog HDL测试文件并注释;

标准答案

(1)

module counter10(out,clr,clk);

input clr,clk; //IO端口定义

output out;

reg [3:0] cnt; //计数

always @ (posedge clk)

if(!clr)

cnt <= 1’b0;

else if(cnt == 4’d9)

cnt <= 1’b0;

else

cnt <= cnt + 1’b1;

assign out = (cnt == 4’d9); //计数结果输出

endmodule

(2)

module counter10_test;

reg clk, rst;

wire out;

initial //赋初值

begin

rst = 1’b0;

clk = 1’b0;

#100

rst = 1’b1;

end

always #10 clk = ~clk; //产生时钟信号

counter10 u0(.out(out),.clr(rst),.clk(clk)); //调用设计模型

endmodule

五、根据下列Verilog代码给出电路结构图,针对资源共享的思想分析电路的问题点并提出改进方法,用Verilog语言描写并给出电路结构图。(五题和六题任选一题)

源代码描述如下:

for(i=0,i<=3,i=i+1)

begin

if (enable[i] ==1)

vsum = vsum+ offset[i];

else

vsum = vsum;

end

原代码对应的电路如下所示:

for (i=0;i<=3;i=i+1) begin if (enable[i] ==1) offset_1= offset_1+ offset[i]; else vsum = vsum; end

vsum = vsum+offset_1;

评分标准:画出原代码对应的电路,并分析出资源特点得4分 画出优化后的电路,并分析出资源特点得4分 写出了优化后的源代码得2分。 六、(10分)使用状态机设计一个“11011”序列检测器,序列输入为s_in ,检测结果输出为p_out ,高电平表示发现指定序列,低电平表示没有发现指令序列。请对状态进行定义,并画出状态转移图。(10分)(五题和六题任选一题)

0/0

状态定义:

IDLE :3’b000 未检出有效比特 A : 3’b001 检出有效比特1 B : 3’b010 检出有效比特11 C : 3’b011 检出有效比特110 D : 3’b100 检出有效比特1101 E : 3’b101 检出有效比特11011

图中使用了4个选择器以及4个

4位加法器。可将4个加法器中的共用部分进行共享,即对4个选择器的输出进行求和后再与之前的结果进行相加,其电路如下所示: 左图使用了4个选择器和4个加

法器,包括2个2位的加法器和1个3位的加法器和1个4位的加法器。电路对应代码如下:

评分标准:6个状态,每个状态转换正确得1分,共6分进行状态定义与编码,得1分

定义了图例,及图中sin/p_out,得1分

输入(即s_in)书写正确得1分

输出(即p_out)书写正确得1分

基于VerilogHDL的万年历

基于Verilog HDL 的万年历 设计与总结报告 题目名称:基于Verilog HDL 的万年历研究设计报告人:__________ __ ____________ __ 院系/年级/ 专业:___ _____ 指导教师:_ ___________________ 制作日期:_ __ _

基于Verilog HDL 的万年历 摘要 基于Verilog HDL的万年历设计,主要完成的任务是使用Verilog 语言,在Quartus2 上完成电路设计,程序开发模拟,基于功能是能够显示/ 修改年月日时分秒。电路设计模块:分频、控制、时间显示调整、时分秒、年月日、显示控制、译码器。各个模块完成不同的任务,合在一起就构成了万年历电路设计。软件模拟直接在Quartus2 上进行。 随着科学技术的发展,时间观念越来越重,但是老式的钟表以及日历等时间显示工具已不合时宜。对此,数字钟表的设计有了用武之地。基于Verilog 的万年历设计,采用软件开发模拟,开发成本低,而且在功能设计上有了很大的灵活度。同时,该设计的精度远远超过钟表,并且不需要维修。综上所述,本设计具有设计方便、功能多样、电路简洁、成本低廉等优点。符合社会发展趋势,前景广阔。

关键词:万年历,Verilog HDL ,Quartus2

Based on the design of the calendar Verilog HDL circuit Abstract The calendar based on FPGA design, the main task is to use eVrilog language, in the Quartus2 complete circuit design module is divided into several modules: point frequency, control and time display adjustment, arc, date, display, when control, decoder. Each module complete different tasks, together they form a calendar system circuit design. Software simulation on directly in Quartus2. With the development of technology and science, the concept of time is more and more heavey, but old-fashioned clock and calendar etc time display tools are not very good. Key words : Calendar, Verilog HDL ,Quartus2

verilog硬件描述语言 上机

《硬件描述语言》上机作业西电微电子 \

第一题:用Verilog语言的结构描述和行为描述分别设计下面的电路。 A[0] Array B[0] A[1] B[1] A[2] B[2] 结构描述: 电路设计: module hw1(A,B,Y); input[2:0] A,B; output Y; wire w1,w2,w3; xor U1(w1,A[0],B[0]); xor U2(w2,A[1],B[1]); xor U3(w3,A[2],B[2]); nor U4(Y,w1,w2,w3); endmodule 仿真测试: module test_hw1; reg[2:0] A,B; wire Y; hw1 U1(A,B,Y); initial begin A=3'b000;B=3'b000; #50 A=3'b000;B=3'b000; #50 A=3'b111;B=3'b111; #50 A=3'b000;B=3'b110;

#50 A=3'b111;B=3'b000; #50 A=3'b110;B=3'b110; #50 A=3'b011;B=3'b010; #50 A=3'b001;B=3'b011; #50 A=3'b111;B=3'b010; #50 $stop; end initial $monitor($time,"\tA=%d\tB=%d\tY=%d",A,B,Y); Endmodule 行为描述: 电路设计: module hw2(A,B,Y); input[2:0] A,B; output Y; wire Y; assign Y=~((A[0]^B[0])||(A[1]^B[1])||(A[2]^B[2])); endmodule 仿真测试:

Verilog期末复习

Verilog期末总复习 考试时间: ?2010年12月15日星期三上午8:00—9:35随堂考 考试内容: ?凡是课堂讲过的内容都有可能考 ?重点是对基本语法的掌握能力和实际应用能力 ?本课件不规划考试大纲,切勿仅仅据此复习 试题类型: ?填空40% ?简答读代码画波形等40% ?综合写代码题20% 复习内容(一) 第一章 ? 1.1绪论,硬件描述语言VerilogHDL的发展和特点 ? 1.2 超大规模集成电路设计流程 第二章简单的Verilog HDL模块和测试 第三章 ? 3.1数据类型及变量常量 ? 3.2运算符和表达式 ? 3.3数据流建模 ? 3.4 门级结构描述 ? 3.5行为建模和块语句 ? 3.6过程性赋值语句 ? 3.7条件语句和循环语句 ? 3.8系统任务和函数 ? 3.9结构建模、编译预处理及用户定义原语 第四章有限状态机和可综合风格的VerilogHDL ? 4.1 有限状态机建模(一) ? 4.2 采用有限状态机高级建模(二) ? 4.3编码规范和可综合代码 第五章可重用设计、可综合设计

Verilog HDL的应用 ?系统级(system): 用高级语言结构实现设计模块的外部性能的模 ?算法级(algorithmic): 用高级语言结构实现设计算法的模型。 ?RTL级(Register Transfer Level): 描述数据在寄存器之间流动和如何处理这些数据的模型。 ?门级(gate-level): 描述逻辑门以及逻辑门之间的连接的模型。 ?开关级(switch-level): 描述器件中三极管和储存节点以及它们之间连接的模型。 合法和非法标识符 合法的:非法的: shift_reg_a 34net bus263 2_m_pmos //不能用数字开头 \32100 a*b_net //不能含有非字母符号* _a_bus n@263 //不能含有非字母符号@ \initial Verilog 是大小写敏感的。所谓标识别符就是用户为程序描述中的Verilog 对象所起的名字。 标识符必须以英语字母(a-z, A-Z)起头,或者用下横线符(_ )起头。其中可以包含数字、$符和下横线符。 特别标识符是用“\”符开始,以空格符结束的标识符。它可以包含任何可打印的ASCII字符。 例如 以下不正确的标识符名称是 ?Sad_66 ?\32100 ?_a_bus ?\initial ?/data_out ?Module ?2_m_pmos 存储器memory型变量 存储器memory型 用一个寄存器数组来对存储器建模。 格式: reg [msb:lsb] 存储器名[upper1:lower1]; 如: reg [3:0] MyMem [63:0]; // 64个四位寄存器组 如果要声明一个存储器变量,存储单元大小为8位,一共2048个存储单元,存储单元名称为mem,代码描述为: ?reg [7:0] mem[2047:0] 举例说明数据类型的选择

蔡觉平老师西电Verilog HDL上机大作业(硬件描述语言)_微电子学院

《Verilog HDL 数字集成电路设计原理与应用》上机作业 班级:******* 学号:******* 姓名:******* 题目1:数字集成电路的verilog HDL 描述与仿真。 要求:(1)学习使用Modelsim 设计和仿真软件; (2)练习教材7.2.1中的例子; (3)掌握设计代码和测试代码的编写; (4)掌握测试仿真流程; (5)掌握Modelsim 软件的波形验证方式。 解答: 题目2: 简述begin-end 语句块和fork-join 语句块的区别,并写出下面信号对应的程序代码 A B

解答: (1)begin-end语句块和fork-join语句块的区别: 1、执行顺序:begin-end语句块按照语句顺序执行,fork-join语句块所有语句均在同一时刻执行; 2、语句前面延迟时间的意义:begin-end语句块为相对于前一条语句执行结束的时间,fork-join语句块为相对于并行语句块启动的时间; 3、起始时间:begin-end语句块为首句开始执行的时间,fork-join语句块为转入并行语句块的时间; 4、结束时间:begin-end语句块为最后一条语句执行结束的时间,fork-join语句块为执行时间最长的那条语句执行结束的时间; 5、行为描述的意义:begin-end语句块为电路中的数据在时钟及控制信号的作用下,沿数据通道中各级寄存器之间的传送过程。fork-join语句块为电路上电后,各电路模块同时开始工作的过程。 (2)程序代码: Begin-end语句: module initial_tb1; reg A,B; initial begin A=0;B=1; #10 A=1;B=0; #10 B=1; #10 A=0; #10 B=0; #10 A=1;B=1; end endmodule Frk-join语句: module wave_tb2; reg A,B; parameter T=10; initial fork A=0;B=1; #T A=1;B=0; #(2*T) B=1; #(3*T) A=0; #(4*T) B=0; #(5*T) A=1;B=1; join endmodule

Verilog期末复习题

Verilog 复习题 一、填空题 1.用EDA技术进行电子系统设计的目标是最终完成ASIC的设计与实现。 2.可编程器件分为CPLD和FPGA。 3 . 随着EDA技术的不断完善与成熟,自顶向下的设计方法更多的被应用于VerilogHDL 设计当中。 4 . 目前国际上较大的PLD器件制造公司有ALtera和Xilinx公司。 5.完整的条件语句将产生组合电路,不完整的条件语句将产生时序电路。 6.阻塞性赋值符号为=,非阻塞性赋值符号为<=。 7.有限状态机分为Moore和Mealy两种类型。 8、EDA缩写的含义为电子设计自动化(ElectronicDesignAutomation) 9.状态机常用状态编码有二进制、格雷码和独热码。 10.VerilogHDL 中任务可以调用其他任务和函数。 11.系统函数和任务函数的首字符标志为$ ,预编译指令首字符标志 为 12.可编程逻辑器件的优化过程主要是对速度和资源的处理过程。 13、大型数字逻辑电路设计采用的IP核有软IP、固IP和硬IP。 # 。 二、选择题 1、已知“a=1b’1;b=3b'001;”那么{a,b}=( C ) (A)4b'0011(B)3b'001(C)4b'1001(D)3b'101 2、在verilog 中,下列语句哪个不是分支语句? ( D ) (A)if-else(B)case(C)casez(D)repeat 3、VerilogHDL 语言进行电路设计方法有哪几种 ( ①自上而下的设计方法( Top-Down) ②自下而上的设计方法( Bottom-Up) 8分) ③综合设计的方法 4、在verilog语言中,a=4b'1011,那 么 &a=(D ) (A)4b'1011(B)4b'1111(C)1b'1(D)1b'0 5、在verilog语言中整型数据与(C)位寄存器数据在实际意义上是相同的。 (A)8(B)16(C)32(D)64 6、大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是___C____。 A.FPGA全称为复杂可编程逻辑器件; B.FPGA是基于乘积项结构的可编程逻辑器件; C.基于SRAM的FPGA器件,在每次上电后必须进行一次配置; D.在Altera公司生产的器件中,MAX7000系列属FPGA结构。 7.子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化);指出下列哪些方法是面积优化___B______。 ①流水线设计 ②资源共享 ③逻辑优化

基于Verilog的课程设计

基于Verilog的课程设计 直流电机的PWM控制 指导老师:翁嘉民 班级:1031电气自动化技术成员:李高峰9112 王俊才9186 孟令朋9143

目录 1.绪论 (3) 直流电机介绍 (3) 1.1.1直流电机的特点 (3) 1.1.2直流电机的应用 (3) 介绍 (4) 介绍 (4) V ERILOG HDL硬件描述语言 (5) 1.4.1V ERILOG HDL硬件描述语言介绍 (5) 1.4.2V ERILOG HDL功能 (5) PWM脉冲宽度调制介绍 (6) 直流电机的PWM控制 (7) 2.设计原理 (8) 设计原理框图 (8) 原理图 (9) 模块设计 (9) 2.3.1 MOTO_TEST模块 (9) 2.3.4计数器模块 (12) 7实训心得 (13) 参考文献 (13)

直流电机的PWM控制器的设计 1.绪论 直流电机介绍 直流电机是实现直流电能与机械能之间相互转换的一种电力机械,按照直流电机的用途分为直流电动机和直流发电机两类。能够将机械能转换成直流电能的电机称为直流发电机;能够将直流电能转换成机械能的电机称为直流电动机。 1.1.1直流电机的特点 从直流电机与交流电机相比中可以看出,直流电机具有优良的调速性能和启动性能。直流电机具有宽广的调速范围,平滑的无级调速特性,可实现频繁的无级快速启动、制动和反转;过载能力大,能承受频繁的冲击负载;能满足自动化生产系统中各种特殊运行的要求。而直流发电机则能提供无脉动的大功率直流电源,且输出电压可以精确地调节和控制。 1.1.2直流电机的应用 直流电机是交通、工矿、建筑等行业中的常见动力机械,是机电行业人员的重要工作对象和工具。在某些要求调速范围广、速度快、精密度高、控制性能优异的场合,直流电机的应用目前仍占有较大的比重,如大型可逆式轧钢机、内燃机车、矿井卷扬机、造纸和印刷机械、宾馆高速电梯、城市电车、电动自行车、龙门刨床、电力机车、地铁列车、船舶机械、大型精密机床和大型起重机等生产机械中。

VerilogHDL与FPGA设计基础_授课教案0709

西安邮电大学课程教案 课程名称:VerilogHDL与FPGA设计基础 授课教师:李哲 授课教师所在学院:电子工程学院 授课班级:电路1201~02 授课学期: 2014-2015-01学期

一、基本信息 课程名称VerilogHDL与FPGA设计基础 课程性质○必修⊙限选○选修○素拓○跨学科授课专业班级学生人数:67 所处年级○一年级○二年级⊙三年级○四年级 总学时64 理论课时40 实验课时24 学分 4 课程教材VerilogHDL与FPGA设计基础 上课时间2014-2015-1 上课地点A337、A322 答疑时间答疑地点2#112 先修课程 本课程在授课对象所学专业人才培养中的作用与地位本课程是集成电路设计与系统集成专业的一门专业基础课程,学生在先修课程数字电路基础上,掌握使用VerilogHDL进行数字电路设计、仿真,并在Fpga器件上实现数字逻辑。初步掌握集成电路和数字系统的设计方法,培养学生从事集成电路设计技能,对学生进入集成电路设计领域有很重要作用。 本课程在知识传授、能力提升、素质培养各方面的教学目标掌握基于FPGA Verilog HDL实现数字电路仿真的方法。一方面可以使学生掌握一种适合产品样机和小批量生产的理想手段,另一方面也为进一步学习专用集成电路芯片设计打下了良好基础。通过本课程的学习可以使学生掌握1)自顶向下的全正向设计思想;2)可编程逻辑器件的基本知识和相关软件的使用方法;3)FPGA电路设计的方法和技巧。基本具备中小规模可编程逻辑器件的设计开发能力。 学生情况分析注:本栏目建议各位老师通过与学生深入沟通、向前续课程授课教师和辅导员老师了解情况等各种方式,充分了解授课学生的实际情况,积极有效地开展教学。

Verilog试题 A答案

北京航空航天大学 2011 ~2012 学年第二学期 数字EDA 期末考试试卷 ( 2012 年 5 月 23 日) 班级:__________;学号:______________;姓名:__________________;成绩:___________ 注意事项:1、填空题与选择题直接在试题上作答 2、设计题在答题纸上作答 正题: 一、填空题(共30分,每道题3分) 1. 写出表达式以实现对应电路的逻辑功能。 F 2. 根据图中输入输出关系将Verilog 模块定义补充完整,其中信号A 为5比特宽度,其余信号为1比特宽度。 A 宽 3. IEEE 标准的硬件描述语言是 verilog HDL 和 VHDL 。 4. 你所知道的可编程逻辑器件有(至少两种): FPGA, CPLD, GAL, PAL (任写其二) 。 5. 假定某4比特位宽的变量a 的值为4’b1011,计算下列运算表达式的结果 6. Verilog 语言规定了逻辑电路中信号的4种状态,分别是0,1,X 和Z 。其中0表示低电平状态,1表示高电平状态,X 表示 不定态(或未知状态) ,Z 表示 高阻态 。 assign F= E ^ ( (A&B) | (!(C&D))) module tblock( A,B,C ) ; output [4:0] A; input B; inout C; …… //省略了功能描述 endmodule //模块结束 &a = 1’b0 ~a = 4’b0100 {3{a}} = 12’b101110111011 {a[2:0],a[3]} = 4’b0111 (a<4’d3) || (a>=a) = 1’b1 !a = 1’b0

基于VerilogHDL的万年历(20210311075245)

基于Verilog HDL的万年历 设计与总结报告 题目名称:基于Verilog HDL的万年历研究设计 报告人:___________________________________________ 院系/年级/专业:________________________ 指导教师:________________________________________ 制作日期:_____________________________

基于Verilog HDL的万年历 摘要 基于Verilog HDL的万年历设计,主要完成的任务是使用Verilog 语言,在Quartus2上完成电路设计,程序开发模拟,基于功能是能够显示/修改年月日时分秒。电路设计模块:分频、控制、时间显示调整、时分秒、年月日、显示控制、译码器。各个模块完成不同的任务,合在一起就构成了万年历电路设计。软件模拟直接在Quartus2上进行。 随着科学技术的发展,时间观念越来越重,但是老式的钟表以 及日历等时间显示工具已不合时宜。对此,数字钟表的设计有了用武之地。基于Verilog的万年历设计,采用软件开发模拟,开发成本低,而且在功能设计上有了很大的灵活度。同时,该设计的精度远远超过钟表,并且不需要维修。综上所述,本设计具有设计方便、功能多样、电路简洁、成本低廉等优点。符合社会发展趋势,前景广阔。 关键词:万年历,Verilog HDL ,Quartus2

Based on the design of the calendar Verilog HDL circuit Abstract The cale ndar based on FPGA desig n, the main task is to use VTilog Ian guage, in the Quartus2 complete circuit desig n module is divided into several modules: point freque ncy, con trol and time display adjustme nt, arc, date, display, whe n con trol, decoder. Each module complete differe nt tasks, together they form a calendar system circuit design. Software simulation on directly in Quartus2. With the developme nt of tech no logy and scie nee, the con cept of time is more and more heavey, but old-fashi oned clock and cale ndar etc time display tools are not very good. Key words : Calendar,Verilog HDL , Quartus2

verilog语言设计-同步清零计数器

数字电子技术基础可编程逻辑器件大作业106进制同步清零计数器 班级:0906101 学号:1090610106 姓名:康代涛

1.同步清零计数器 1.1设计目的与要求 利用Verilog HDL设计一个以自己学号后三位为模的计数器。 设计要求:1.编写源程序2.给出仿真电路图和仿真波形图。 1.2 Verilog HDL源代码 module counter_106(clk,reset,out); input clk; input reset; output[6:0] out; reg[6:0] out; always@(posedge clk) begin if(reset==1) out<=0; else if(out==105) out<=0; else out<=out+1; end endmodule 1.3仿真原理图 同步清零计数器的仿真电路如下图所示: 1.4 仿真波形图 同步清零计数器仿真波形如下图所示:

2设计总结 本次设计需要利用Verilog HDL设计一个以自己学号后三位为模的计数器,而且要编写源程序并给出仿真电路图和仿真波形图。 通过本次设计,使自己初步了解了如何利用Quartus II 9.1 设计可编程逻辑器件,巩固了用Verilog HDL 语言编写硬件描述电路,以这样一种方式使自己复习并进一步熟悉了Verilog语言,对自己在数字电子技术方面的学习有很大作用。 参考文献: [1]杨春玲,王淑娟,《数字电子技术基础》,高等教育出版社,2011.6 [2]王立欣,杨春玲,《电子技术实验与课程设计》,哈尔滨工业大学出版社,2009 [3]廉玉欣,《电子技术基础实验教程》,机械工业出版社,2010

数字系统设计与verilog_HDL_王金明_第四版__EDA期末知识点复习(宁波工程学院电科版)

1、采用硬件描述语言(HDL)进行电路设计的优势。 1)更适合用于描述规模大、功能复杂的数字系统 2)语言标准化、便于设计的复用、交流、保存和修改 3)设计与工艺的无关性,宽范围的描述能力,便于组织大规模、模块化的设计 2、Verilog模块的结构 模块声明:包括模块名字、模块输入、输出端口列表,结束关键字为endmodule 端口定义:格式为:input: 端口名1,端口名2…端口名n; output: 端口名1,端口名2…端口名n; inout: 端口名1,端口名2…端口名n; 3、标识符是用户在编程时给verilog对象起的名字,模块、端口和实例的名字都是标识符。标识符可以是任意一组字母、数字以及符号“$”和“_”的组合,但标识符的第一个字符必须是字母(a-z,A-Z)或者是下划线“_”,标识符最长可包含1023个字符,此外,标识符区分大小写。 4、整数写法:+/- 1、在较长的数之间可用下划线分开 2、当数字不说明位宽时,默认值为32位 3、X或(z)在二进制中代表1位x(或z),在八进制中代表3位,在16进制中代表4位 4、如果没有定义一个整数的位宽,其宽度为相应值中定义的位数。 5、如果定义的位宽比实际的位数长,通常在左边填0补位,但如果最左边一位为x或z,就相应的用x或z左边补位。 6、“?”是高阻态z的另一种表示符号,在数字的表示中,字符“?”和z是完全等价的,可相互代替。 7、整数可以带符号,并且正负号应写在最左边,负数通常表示为二进制补码的形式。 8、当位宽与进制缺省时表示的是10进制数 9、在位宽和‘之间,以及进制和数值之间允许出现空格,但’和进制之间以及数值之间是不能出现空格的。 要求掌握整数正确的书写方式。 5、向量:宽度大于1位的变量; 标量:宽度为1位的变量。 定义2个8位reg型矢量:reg [7:0] ra, rb; 6、运算符 (1)注意:逻辑运算符,例如逻辑与&&、逻辑或||、逻辑非!,运算结果是1位的。如果操作数不止1位的话,则应将操作数作为一个整体来对待,即如果操作数全是0,则相当于逻辑0,但只要某一位是1,则操作数就应该整体看作逻辑1。 例如:若A = 4’b0000, B = 4’b0101,则有: A && B = 0; (2)位拼接运算符:{ }将两个或多个信号的某些位拼接起来 7、initial语句和always语句的区别:initial语句常用于仿真中的初始化,initial过程块中的语句只执行一次,不带触发条件;always块内的语句则是不断重复执行的,Always过程语句是可综合的,带有触发条件。 8、posedge:上升negedge:下降 弄清楚同步和异步的概念。 例如:如果Nreset和Nset是异步,时钟clock上升沿触发。

蔡觉平老师,verilog上机作业

上机作业 题目2:简述begin-end 语句块和fork-join 语句块的区别,并写出下面信号对应的程序代码 begin-end 语句块和fork-join 语句块的区别: 1、执行顺序:begin-end 语句块按照语句顺序执行,fork-join 语句块所有语句均在同一时刻执行; 2、语句前面延迟时间的意义:begin-end 语句块为相对于前一条语句执行结束的时间,fork-join 语句块为相对于并行语句块启动的时间; 3、起始时间:begin-end 语句块为首句开始执行的时间,fork-join 语句块为转入并行语句块的时间; 4、结束时间:begin-end 语句块为最后一条语句执行结束的时间,fork-join 语句块为执行时间最长的那条语句执行结束的时间; 5、行为描述的意义:begin-end 语句块为电路中的数据在时钟及控制信号的作用下,沿数据通道中各级寄存器之间的传送过程。fork-join 语句块为电路上电后,各电路模块同时开始工作的过程。 程序如下: module b(a,b); output a,b; reg a,b; initial begin a=0; b=1; #10 a=1; fork b=0; #10 b=1; #20 a=0; join #10 b=0; #10 a=1; b=1; end endmodule A B

题目3.分别用阻塞和非阻塞赋值语句描述如下图所示移位寄存器的电路图。 程序如下: module block1(din,clk,out0,out1,out2,out3); input din,clk; output out0,out1,out2,out3; reg out0,out1,out2,out3; always@(posedge clk) begin out3=out2; out2=out1; out1=out0; out0=din; end endmodule

Verilog期末复习题[优质文档]

Verilog复习题 一、填空题 1. 用EDA技术进行电子系统设计的目标是最终完成 2. 可编程器件分为CPLD和FPGA。 3. 随着EDA技术的不断完善与成熟,自顶向下的设计方法更多的被应用于Verilog HDL 设计当中。 4. 目前国际上较大的PLD器件制造公司有ALtera和Xilinx公司。 5. 完整的条件语句将产生组合电路,不完整的条件语句将产生时序电路。 6. 阻塞性赋值符号为=,非阻塞性赋值符号为<= 。 7.有限状态机分为Moore和Mealy两种类型。 8、EDA 9.状态机常用状态编码有二进制、格雷码和独热码。 10.V erilog HDL中任务可以调用其他任务和函数。 11.系统函数和任务函数的首字符标志为$,预编译指令首字符标志为#。 12.可编程逻辑器件的优化过程主要是对速度和资源的处理过程。 13、大型数字逻辑电路设计采用的IP核有软IP、固IP和硬IP。 二、选择题 1、已知“a =1b’1; b=3b'001;”那么{a,b}=(C ) (A) 4b'0011 (B) 3b'001 (C) 4b'1001 (D) 3b'101 2、在verilog中,下列语句哪个不是分支语句?( D ) (A) if-else (B) case (C) casez (D) repeat 3、Verilog HDL语言进行电路设计方法有哪几种(8分) ①自上而下的设计方法(Top-Down) ②自下而上的设计方法(Bottom-Up) ③综合设计的方法 4、在verilog语言中,a=4b'1011,那么 &a=(D ) (A) 4b'1011 (B) 4b'1111 (C) 1b'1 (D) 1b'0 5、在verilog语言中整型数据与(C)位寄存器数据在实际意义上是相同的。 (A) 8 (B) 16 (C) 32 (D) 64 6、大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是___C____ 。 A.FPGA全称为复杂可编程逻辑器件; B.FPGA是基于乘积项结构的可编程逻辑器件; C.基于SRAM的FPGA器件,在每次上电后必须进行一次配置; D.在Altera公司生产的器件中,MAX7000系列属FPGA结构。 7. 子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化);指出下列哪些方法是面积优化___B______。 ①流水线设计 ②资源共享 ③逻辑优化 ④串行化 ⑤寄存器配平

基于verilog的数字秒表的设计实现1

基于FPGA数字秒表的设计实现 一、测试要求 1 有源晶振频率:48MHZ 2 测试计时范围:00’00”00 ~ 59’59”99,显示的最长时间为59分59 秒 3 数字秒表的计时精度是10ms 4 显示工作方式: a、用八位BCD七段数码管显示读数 b、采用记忆显示方法 c、用两个按钮开关(一个按钮使秒表复位,另一个按钮 控制秒表的启动/暂停) 二、设计要求 1 设计出符合设计要求的解决方案 2设计出单元电路 3 利用软件对各单元电路及整体电路进行仿真 4 在开发板上实现设计 5 撰写设计报告 三、秒表功能键 1、power:秒表电源键 2、Reset:秒表复位清零键 3、run/stop:秒表启动/停止键 四、实验原理 1 实验设计原理 (1)、秒表的逻辑结构较简单,它主要由十进制计数器、六进制计数器、分频器、数据选择器、和显示译码器等组成。在整个秒表中最关键的是如何获得一个精确的100HZ计时脉冲,除此之外,整个秒表还需有一个启动信号和一个清零信号,以便秒表能随意停止、启动以及清零复位。 (2)、秒表有共有8个输出显示,其中6个显示输出数据,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应;另外两个为间隔符,显示‘-’。8个计数器的输出全都为BCD码输出,这样便与同显示译码器连接。

(3)、可定义一个24位二进制的寄存器hour用于存放8个计数器的输出,寄存器从高位到低位每连续4位为一组,分别存放百分之一秒、十分之一秒、间隔符、秒、十秒、间隔符、分、十分。由频率信号输出端输出频率为100HZ的时钟信号,输入到百分之一秒模块的时钟端clk,百分之一秒模块为100进制的计数器,当计数到“1001”时,百分之一秒模块清零,同时十分之一秒模块加1;十分之一秒模块也为100进制的计数器,当计数到“1001”时,十分之一秒模块清零,同时秒模块加1;以此类推。直到分模块计数到59进59。 (4)、为了消除按键消抖问题,定义寄存器key-inner来存储按键key的输入信号,key-flag作为启动/暂停的转换标志,key-inner[0]出现一个下降沿时,key-flag 取反一次,当key-flag为0时计数器启动,1时计数器暂停,当key-flag为1同时key-inner[1]为9时,计数器清零。 (5)、定义18位寄存器count用于存放分频和扫描用的计数值。48MHZ的时钟信号480000分频,得到100HZ的时钟信号,而计数器已48MHZ的时钟信号218分频扫描8个七段译码器。 2 实验设计方案 利用一块芯片完成除时钟源,按键和显示器之外的所有数字电路功能。所有数字逻辑功能都在CPLD器件上用Verilog语言实现。这样设计具有体积小,设计周期短,调试方便,故障率地和修改升级容易等特点,本设计采用依次进行消抖、分频、数码管动态扫描、显示(译码)和计数流水线的设计方法。 3 实验原理框图 秒表原理框图 扫描显示 分频48Mhz Reg[1:0]] 计数100hz

Verilog hw 电子科技大学

第一章作业 1、集成电路是哪一年有谁发明的? 2、诺伊斯对集成电路的主要贡献是什么 3、MOS场效应管是哪年出现的? 4、集成电路的发展规律是由谁总结提出来的,具体规律是什么 5、叙述集成电路的层次设计步骤 第二章作业 1、集成电路的加工有哪些基本工艺? 2、简述光刻工艺过程及作用 3、简述双阱CMOS集成电路工艺加工过程? 4、MOS晶体管什么类型? 5、版图设计的过程分为那几步? 6、设MOS电路中某层的电阻率ρ=1?·cm,该层厚度是1μm,试计算: (1)有这层材料制作的长度为55μm、宽度为5μm的电阻值 (2)若使用方块电阻的概念,计算该材料的方块电阻值? 第三章作业 1、说明MOS管的工作原理 2、写出NMOS管的电流-电压方程 3、MOS晶体管从工作原理上类别,画出其符号和输出特性曲线及转移特性曲线 4、MOS反相器有哪些种类?说明每种反相器的特性。 第四章 1、什么是硬件描述语言?它的主要作用是什么? 2、采用硬件描述语言设计方法的优点是什么?有什么缺点? 3、Verilog HDL中的数字可以出现哪些值?相应代表的是什么样的物理意义?

4、Verilog HDL中有哪几种数据类型?它们各代表什么意义? 5、完成一个移位寄存器的设计,要求有同步清零功能。 6、Verilog HDL的模型共有哪些类型(级别)? 7、什么是综合?是否任何符合语法的Verilog HDL程序都可以综合? 8、综合后生成的是不是真实的电路?若不是,还需要哪些步骤才能真正变为具体的电路? 9、对同一条线,是否允许由多个连续赋值语句对它进行赋值?对一个寄存器变量,是否允许在同一时刻有多个过程赋值语句对它进行赋值? 10. 综合实例设计一个简易计算器。 第五章作业 1、讲述门阵列的基本结构特征与设计步骤 2、什么是门阵列的母片?什么是门阵列的基本单元?举例说明门阵列基本单元和基本电路单元的关系 3、试对门阵列和标准单元设计方法的主要特征进行比较。 4、叙述FPGA器件的典型结构和编程方法。 5、软核是什么?虚拟器件是什么?固核是什么?硬核是什么? 6、SoC设计方法的三大关键技术是什么?

基于Verilog的简单计算器设计

module alu4( input wire [3:0]alusel, input wire [3:0]a, input wire [3:0]b, output reg nf, //令标志位output reg zf, //负标志位output reg cf, //进位标志output reg ovf, //溢出位标志output reg [7:0]y, output reg [3:0]rem //余数 ); reg [4:0]temp; reg [7:0]pv; reg [7:0]dp; integer i; reg [1:0]remL; reg [1:0]quotL; always@(*) begin y=0; rem=0; cf=0; ovf=0; nf=0; temp=5'b00000; case(alusel) 4'b0001:y=a; //传递 4'b0010: //加法 begin temp={1'b0,a}+{1'b0,b}; y=temp[3:0]; cf=temp[4]; ovf=y[3]^a[3]^b[3]^cf; end 4'b0011: //减法1 begin temp={1'b0,a}-{1'b0,b}; y=temp[3:0]; cf=temp[4]; ovf=y[3]^a[3]^b[3]^cf; end 4'b0100: //减法二 begin temp={1'b0,b}-{1'b0,a};

y=temp[3:0]; cf=temp[4]; ovf=y[3]^a[3]^b[3]^cf; end 4'b0101: //乘法 begin pv=8'b00000000; dp={4'b0000,b}; for (i=0;i<=3;i=i+1) begin if(a[i]==1) pv=pv+dp; dp={dp[6:0],1'b0}; end y=pv; end 4'b0110:div({1'b0,b[3:0]},a,y,rem); //除法1 4'b0111:div({1'b0,a[3:0]},b,y,rem); //除法2 4'b1000:y=~a; //非 4'b1001:y=a&b; //与 4'b1010:y=a|b; //或 4'b1011:y=a^b; //异或 4'b1100:y={a[2:0],1'b0}; //左移1位 4'b1101:y={a[2:0],a[3]}; //循环左移1位 4'b1110:y={a[0],a[3:1]}; //循环右移1位 4'b1111:y={a[3],a[3:1]}; //算数右移1位 default:y=a; endcase nf=y[3]; if(y==4'b0000) zf=1; else zf=0; if(y>=10) cf=1; else cf=0; if(y>99) ovf=1; else ovf=0; end task div( //定义除法

哈工大Verilog课程设计-状态机

可编程逻辑器件大作业(二) 2012年12月

一、题目 利用Verilog HDL设计一个电路,对输入的一串二进制数,用于检测序列中连续3个或者3个以上的1,状态转换图如图所示。要求: 1、编写源程序; 2、给出仿真电路图、状态转换图和仿真波形图 二、程序代码 module moore(clk,din,op,reset); input clk,din,reset; output op; reg[1:0] current_state,next_state; reg op; parameter S0=2'b00,S1=2'b01,S2=2'b10,S3=2'b11; always @ (posedge clk) begin if(!reset) current_state = S0; else current_state <= next_state; end always @ (din or current_state)

begin case( current_state ) S0: begin op = 0; if(din == 0) next_state = S0; else next_state = S1; end S1: begin op = 0; if(din == 0) next_state = S0; else next_state = S2; end S2: begin op = 0; if(din == 0) next_state = S0; else next_state = S3; end S3: begin op = 1; if(din == 0) next_state = S0;

VerilogHDL期末复习

文件扩展名为v,大小写敏感;所有关键字必须小写; 标识符(区分大小写) 合法字符:26个大小写英文字母;数字0-9;下划线;$等; 命名规则:以英文字母或下划线开头;不能出现两条(或以上)连续的下划线;不能和关键字重复。 数据对象: 1、常数:整数、实数和字符串。整数可综合,实数和字符串不可综合。 (1)整数:<位宽>’<进制符号><数字> 位宽:数字对应的二进制数的位数; 进制符号包括:b或B(二进制),d或D(十进制),o或O(八进制),h或H(十六进制)。 数字中间可用下划线分隔,提高可读性。 十进制数的位宽和进制符号可省略。 若只标进制,未注明位宽,则位宽为(单个位的该进制数对应二进制位宽*该进制数的位数)。 若指明的位宽比数字需要的位宽小,则从左边(高位)截去多余位。 除十进制外,数字中可用x或X(未知),z或Z(高

阻)。位数由所在数字格式决定。如'hfx等价于'b1111xxxx 整数可在其前面加负号,负数的实际值为其对应的二进制补码。 (2)实数 (3)字符串 2、变量 (1)网络型(net type) net型变量的输出值始终根据输入变化而变化,一般用来定义硬件电路中的各种连线。 wire型变量是net型变量中最常用的一种,其取值可以是0、1、x或z。 wire、tri:连线类型,功能完全相同;tri名称仅为增加程序可读性,表示综合后电路有三态功能。 wor、trior:具有线或特性的连线,功能相同。 wand、triand:具有线与特性的连线,功能相同。 tri1、tri0:分别为上拉电阻和下拉电阻。 supply1、supply0:分别为电源(逻辑1)和地(逻辑0)。 (2)寄存器型(register type) reg:常用的寄存器型变量。(可综合) integer:32位带符号整数型变量。(不同资料中可

基于verilog的序列检测

实验八:序列检测一:序列检测的源程序: module jiance(RST_N,CLK,Q,F); input RST_N,CLK,Q; output F; reg F; reg [6:0] s0,s1; always@ (posedge CLK or negedge RST_N) begin if(!RST_N) s0<=7'b1001101; else begin s1=s1<<1; s1[0]=Q; if (s1==s0) F=1'b1; else F=1'b0; end

end endmodule 二:序列检测的测试代码: `timescale 1 ps/ 1 ps module jiance_vlg_tst(); // constants // general purpose registers reg eachvec; // test vector input registers reg CLK; reg Q; reg RST_N; // wires wire F; // assign statements (if any) jiance i1 ( // port map - connection between master ports and signals/registers .CLK(CLK), .F(F), .Q(Q), .RST_N(RST_N)

); initial begin RST_N=0; CLK=1; Q=1; #10 Q=0; CLK=0; #10 Q=0; #10 Q=1; CLK=1; #10 Q=1; #10 Q=0; #10 Q=1; end initial $monitor($time,"%b",CLK,Q,F); endmodule 三:Transcript显示结果: Loading work.jiance_vlg_tst # Loading work.jiance # ** Warning: (vsim-3009) [TSCALE] - Module 'jiance' does not have a `timescale directive in effect, but previous modules do.

相关文档
相关文档 最新文档