当前位置:文档之家› verilog期末大作业

verilog期末大作业

深圳大学实验报告

课程名称:Verilog HDL及其应用

实验项目名称:波形选择器

学院:电子科学与技术学院

专业:微电子学

指导教师:刘春平

报告人:温志煌学号:2012160228 班级:微电二班实验时间:

实验报告提交时间:

波形选择器

一、实验目的

(1)熟悉Modelsim软件

(2)掌握Modelsim软件的编译、仿真方法

(3)熟练运用Modelsim 软件进行Verilog程序设计开发

二、实验内容及要求

实验原理:在同一个波形里面分别取八个点,用这个八个点的数据还原出对应的波形来,在Verilog中通过建立一个函数分别取这些点数据,然后再通过调用函数得到相对应的波形。

1.实验要求

用Verilog语言设计以下电路,分别产生四种波形:正弦波、方波、三角波1及三角波2。实验要求先在QuartusII里面编译仿真程序,然后再在Modelsim里面仿真产生这四种波形。程序仿真结果示意图如图1所示。

图1.四种波形产生及选择器示意图

2.实验步骤

2.1在QuartusII里的操作步骤:

1)建立一个waveshaper的工程文件

2)以Verilog语言书写waveshaper的源程序

3)编译waveshaper源程序

4)最后再仿真一下这个程序,得到与程序相吻合的数据具体如图所示:

图2. Waveshaper源程序

图3. Waveshaper编译成功

图4. Waveshaper 仿真结果

2.2在Modelsim里的操作步骤:

1)建立waveshaper工程

2)添加两个文件waveshaper跟waveshaper_tp到工程3)分别编译这两个文件

4)在work里面查看编译后的设计单元

5)将信号加入波形窗口

6)运行仿真

其源程序如下:

module waveshaper(q,cp,n);

output [7:0] q;

input cp;

input [1:0] n;

reg [7:0] q;

reg [2:0] Q=3'd0;

wire cp,cr;

always @ (negedge cp )

begin

if(cr) Q<=3'd0;

else

Q<=Q+3'd1;

end

always @(Q or n)

begin

case (n)

0: q=romout({n,Q});

1: q=romout({n,Q});

2: q=romout({n,Q}); 3: q=romout({n,Q}); endcase

end

function [7:0] romout; input [4:0] address; case(address)

0 : romout = 85;

1 : romout = 100;

2 : romout = 85;

3 : romout = 50;

4 : romout = 15;

5 : romout = 0;

6 : romout = 15;

7 : romout = 50;

8 : romout = 0;

9 : romout = 30;

10 : romout = 60;

11 : romout = 90;

12 : romout = 120;

13 : romout = 90;

14 : romout = 60;

15 : romout = 30;

16 : romout = 0;

17 : romout = 10;

18 : romout = 20;

19 : romout = 30;

20 : romout = 40;

21 : romout = 50;

22 : romout = 60;

23 : romout = 70;

24 : romout = 0;

25 : romout = 0;

26 : romout = 0;

27 : romout = 0;

28 : romout = 60;

29 : romout = 60;

30 : romout = 60;

31 : romout = 60; default : romout = 8'hxx; endcase

endfunction Endmodule

其测试程序如下:

`timescale 1ns/1ns

`include "waveshaper.v"

module waveshaper_tp;

reg cp;

reg[1:0] n;

wire[7:0] q;

parameter DELY=100;

waveshaper A(q,cp,n); //调用测试对象

always #(DEL Y/2) cp = ~cp; //产生时钟波形

initial

begin //激励信号定义

cp =0;

n=0;

#(DELY*80) n=1;

#(DELY*80) n=2;

#(DELY*80) n=3;

#(DELY*80) $finish;

end

//定义结果显示格式

initial $monitor($time,,,"cp=%d n=%d q=%d", cp,n,q); endmodule

具体的实验步骤图如下:

图5. waveshaper源程序文件

图6. Waveshaper-tp测试程序

两个文件编译成功后在work里面出现:

图7. Work里面的两个文件

三、实验结果及数据分析

在Modelsim里面添加波形后,然后仿真得到的首先是二进制表示的实验结果,然后再在实验结果里改变实验室数据类型,改为波形数据,调整坐标到屏幕中央,得到正弦波、三角波1及三角波2,但是没有出现方波。由于方波的波形数据调整在另一栏,重新改变波形类型才能出现方波。

其具体的结果图如下:

图8.仿真结果数据显示

图9. 仿真结果波形图(没有调整数据类型)

图10. 仿真的正弦波(n=0)

图11.仿真出来的方波(n=3)

图12. 仿真的三角波1(n=1)

图13.仿真的三角波2(n=2)

数据分析:

仿真时,n是波形选择的关键,n=0时,调用romout函数输出的波形为正弦波;n=1时,输出的为三角波1;n=2时,输出的波形是三角波2;n=3时,调用

romout函数输出方波。这样就把全部波形选择产生了。

四、心得体会

通过此次实验,我更进一步学习了Verilog语言的编写知识,以及一些常见的编写规则,同时提高了解决编译出错的能力。此次实验中再次运用Quatlus II 软件编辑,已经熟练掌握这个软件的操作。在这次实验中最重要也是最关键的就是Modelsim软件的学习与操作,从不会操作到最后将波形成功仿真出来。这个过程学会了很多东西,测试程序的编写以及编译成功的过程可谓是绞尽了脑汁。幸好在反复地检查和修改之后,最终编译成功。同时也发现一个问题,QuatlusII 里面能仿真出来的程序,在Modelsim里面不一定能成功仿真,Modelsim遵循更多规则,输入变量的是必须要有而且是合理的,不能够是端口中的输入、输出。只有遵循了这些规则,仿真才能做到成功。

基于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 仿真测试:

EDA大作业

信号发生器的设计 要求: (1) 产生方波、三角波、锯齿波、正弦波 (2)产生波形的模式可选 (3)频率为10KHz 设计方案: 1.总体设计思路 1.1 设计步骤 此设计将按模块式实现,据设计要求,设计总共分四大步份完成:(1)产生波形(四种波形:方波、三角波、矩形波和锯齿波)信号;(3)频率为10KHZ 幅度固定; 1.2设计思想 利用VHDL编程,依据基本数字电路模块原理进行整合。系统各部分所需工作时钟信号由输入系统时钟信号得到。总体设计框图如下图1所示: 波形输出

2. 方案论证 2.1方案 采用VHDL语言来编程,然后下载文件到FPGA来实现。VHDL语言是电子设计领域的主流硬件描述语言,具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大降低了硬件设计任务,提高了设计效率和可靠性,要比模拟电路快得多。该方案是利用FPGA具有的静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改,极大地提高了电子系统设计的灵活性和通用性,设计图如图2。 图2 FPGA总体设计图 (需要修改) 通过FPGA软件扫描方式将波形数据读出传输给DAC0832(为8分辨率的D/A 转换集成芯片㈠ )产生波形输出。这种方法在软、硬件电路设计上都简单,且与 我们的设计思路紧密结合。 3硬件选择 4软件设计 4.1.1波形产生模块 本设计用VHDL语言根据傅立叶函数采集点进行扫描,分别产生正弦波、三角波和矩形波。以下介绍各种常用周期信号的傅立叶函数展开式。 4.1.3正弦波 (1)设计思想 正弦波发生分为两个步骤,即正弦波幅值采样存储和正弦波波形的还原输出。幅值采样是将一个周期正弦波进行64等分,如图3所示,将64个采样点

蔡觉平老师西电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

EDA技术大作业 全自动洗衣机控制器

《EDA技术》大作业 电子钟电路设计要求: 1、准确计时,以数字形式显示时、分、秒的时间; 2、小时为24进制,分与秒的计时要求为60进制; 3、具有校时功能;、整点报时。4 :姓名:学号武启明1893130125 :班级科学:专业与光电信息131 工程

安徽科技学院数理与信息工程学院物电系 EDA全自动洗衣机控制器 1设计目的 《EDA技术与应用》课程是电子信息工程、自动控制、计算机科学与工程等 专业的技术课之一,具有很强的工程实践性。通过本次课程设计来掌握现代硬件数字电路的软件化设计的基本方法、掌握应用VHDL及EDA 工具开发设计各种电路的基本方法,以及对现代电子设计自动化技术有一定的了解,会把所学的专业知识更好的用到实践中去。 2设计的主要内容和要求 (1)设计一简易全自动洗衣机控制器。该控制器由两大状态A和B组成, 每个状态分三个子状态,每个状态分别由选择A和选择B控制。其中A为步进选择按纽,每步跳转一个子状态、B也为步进选择按纽,但每步选择B中的所有组合中的一种。 (2)过程启动由启动/暂停键控制(暂停键在过程启动后任意时间可暂停/恢复过程)。 (3)过程启动后洗衣机盖开启能任意控制。(4)能设置实现多次洗衣的功能。

3整体设计方案 本次设计大致可以分成两个模块来看待:控制端和工作端。 控制部分使用了三个进程来处理,进程一控制状态COUNT_M,进程二控制状态:当连顺出现一个,两个,COUNT_M,进程三控制开始和暂停。其中,COUNT_N. 三个高电平时分别表示强洗,标准,弱洗三种状态的洗衣过程。再者,COUNT_N:当出现一个,两个,三个高电平时分别表示洗涤,漂洗与甩干,甩干。其次,信号START控制洗衣机的暂停和重新启动。 工作部分使用了一个进程来处理,在该进程中主要处理强制开盖,洗衣的各 个状态。控制端中,中间变量SG是工作结束标志信号, DT是状态的中间变量。COOK为强开洗衣机盖子信号端,DCP输入状态中间信号。LOOK为时间到输出停机,当其输出为高电平时所有数据为0。然后等待下次洗涤始工作,直至再次按下 START 键,又从新开洗衣机正常工作过程。与暂停后的再次启动不同。ST 为时间计数的中间变量。整体设计方案如下:

基于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电路设计的方法和技巧。基本具备中小规模可编程逻辑器件的设计开发能力。 学生情况分析注:本栏目建议各位老师通过与学生深入沟通、向前续课程授课教师和辅导员老师了解情况等各种方式,充分了解授课学生的实际情况,积极有效地开展教学。

(完整word版)EDA计算器设计大作业

计算器设计 专业:电子信息工程 设计者:

摘要 本文介绍了一个简单的计算器的设计,该设计采用了现场可编程逻辑器件FPGA设计,并基于VHDL语言实现加减乘除功能,并用十进制显示在数码管上。系统由计算部分、输入部分、选择部分、输出部分组成,计算部分为加法器、减法器、乘法器和除法器组成。使用Altera公司的QuartusII开发软件进行功能仿真并给出仿真波形,并下载到试验箱,用实验箱上的按键开关模拟输入,用数码管显示十进制计算结果。通过外部按键可以完成四位二进制数的加、减、乘、除四种运算功能,其结果简单,易于实现。 关键字:VHDL,计算器,QuartusII

目录 一.实验目的 (4) 二、流程图 (4) 三.顶层原理图 (5) 四、各个模块 (6) (1)加法器模块 (6) 1、封装元件 (6) 2、加法器程序 (7) 3、仿真结果 (7) (2)减法器模块 (8) 1、封装元件 (8) 2、减法器程序 (9) 3、仿真结果 (10) 4、硬件运行结果 (11) (3)乘法器模块 (12) 1、封装元件 (12) 2、乘法器的设计思想 (12) 3、乘法器程序 (13) 4、仿真结果 (14) 5、硬件运行结果 (14) (4)除法器模块 (15) 1、封装元件 (15) 2、除法器设计思想 (15) 3、除法器程序 (16) 4、仿真结果 (16) 5、硬件运行结果 (17) (5)8位除法器 (18) 1、封装元件 (18) 2、8位除法器设计思想 (18) 3、8位除法器程序 (19) 4、仿真结果 (21) (6)数码管七段译码电路 (22) 1、封装元件 (22) 2、共阴极七段显示码十六进制转换表 (22) 3、七段译码器程序 (23) 4、仿真结果 (23) (7)选择模块 (24) 1、封装元件 (24) 2、程序 (25) 五、管脚锁定 (25) 六、小结与收获 (26)

基于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上机作业

上机作业 题目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

西电EDA大作业多功能彩灯

EDA设计报告彩灯控制器 (老师:宗汝) 班级: 学号: 姓名:

一.设计要求 设计能让一排灯(8只)自动改变显示花样的控制系统。可将实验板上的一排发光二极管作为彩灯用。控制器应有两种控制方式: ◆规则变化。变化节拍有0.5秒和0.25秒两种,交替出现,每种节拍可有8种花样,各执行一或二个周期后轮换。 彩灯变化方向有单向移动,双向移动,跳跃移动等。 ◆随机变化。变化花样相同,但节拍及花样的转换都随机出现。 二.设计方案 (1).分频模块。要产生快慢两种节拍,则首先需要有分频器模块,0.5秒和0.25秒两种则可选择四分频和八分频。通过按键进行选择切换。则clk为输入时钟信号,需经分频器分频并输入到LED显示电路;clr为复位清零信号,高电平有效,有效时,电路无条件的回到初始状态;OPT为频率快慢选择信号,低电平节奏快,高电平节奏慢; (2)LED显示模块。经过分频的时钟信号输入LED显示电路中,使电路有规律的输出按照设定的各种花样变化。xuan为选择彩灯变化花样信号,便于改变彩灯花样。而最后就是输出彩灯变化花样led。 三.系统程序设计 分频器模块: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity FENPINQI is port( clk:in std_logic; clr:in std_logic; opt:in std_logic; clkout:out std_logic ); end FENPINQI; architecture arc of FENPINQI is signal clk_tmp: std_logic; signal counter: std_logic_vector(1 downto 0); begin process(clk,clr,opt) begin if clr='1' then --清零 clk_tmp<='0'; counter<="00"; elsif clk'event and clk='1' then

基于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设计方法的三大关键技术是什么?

EDA大作业 课程设计 简易计算器

在掌握常用数字电路功能和原理的基础上,根据EDA技术课程所学知识,利用硬件描述语言Verilog HDL、EDA软件Quartus II和硬件平台Cyclone/Cyclone II FPGA进行电路系统的设计。本次实验我完成的内容是简单计算器的设计,下面我简单的进行一下原理的阐述。 设计一个简单计算器,输入为8位二进制数,分别用两位数码管显示,输出的计算结果为16位二进制数,并用四位数码管显示,能够实现+、-、 *、/ 四种运算,其中除法的结果显示分为商和余数两部分,分别用两位数码管显示。为了完成要求的效果显示,我先设计了一个简单的四则运算器,为了使其结果能清楚的看到,所以计算器模块和一个7段数码管模块连接。实验要求,输入分别用两位数码管显示,输出用四位数码管显示,所以用一个3—8译码器和数码管连接,通过开关控制,形成动态显示。从左向右,依次是第一位数码管显示a的高四位,第二位数码管显示a的低四位;第三位数码管显示b的高四位,第四位数码管显示b的低四位;第五位数码管到第八位数码管显示输出的结果。通过改变时钟,使其看起来像同时显示在数码管上。

设计流程如下图,分别用两个数码管表示八位二进制数,用一个case 语句表示输入数值采用哪种运算方式,分别用00,01,10,11表示加,减,乘,除。用3—8译码器选择从哪个数码管输出。 硬件流程图 输出结果 A. B 的显示 软件流程图 LED 灯接线部分显示: 中心控制 复位 编码 数码管输出 输入A 输入B 运算选择C 输出out L E D 8 L E D 7 L E D 6 L E D 5 L E D 4 L E D 3 L E D 2 L E D 1

基于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;

eda大作业.

班级 021039 学号 02103121 EDA报告 题目 VHDL设计初步 学院电子工程学院 专业信息对抗技术 学生姓名 导师姓名

目录 第一章实验部分(秒表) (2) 1、程序设计: (2) 2、程序代码 (2) 3、程序调试 (4) 第二章习题部分 (8) 习题一 (8) 习题二 (8) 习题三 (10) 习题四 (11) 习题五 (12) 习题六 (14) 习题七 (17)

第一章实验部分(秒表) 1、程序设计: 秒表显示共有6位,两位显示分,两位显示秒,十分秒和百分秒各一位。设计时使用一个计数器,随着时钟上升沿的到来循环计数,每计数一次,百分秒位加一,通过百分秒位满十进位来控制十分位的计数,十分位满十进位,依次类推,实现秒表计数。 为实现秒位的计时精确,百秒位必须以0.01秒的时间间隔计数,即时钟的频率是100Hz。为此,本设计采用3MHz的时钟频率通过分频得到100Hz的时钟频率,再送给控制时钟以得到比较精确的CLK信号。其中,时钟信号CLK为3MHz 的时钟频率,分频后得到的时钟为CLK2,输出引脚CLK2和输入引脚CLK2在外部相连,实现将分频后的时钟送入。 2、程序代码 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY MIAOBIAO IS PORT (CLK,CLK1,STA,POS,STO,RST: IN STD_LOGIC; CQ1,CQ2,CQ3,CQ4,CQ5,CQ6 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CLK2:OUT STD_LOGIC ); END MIAOBIAO; ARCHITECTURE BEHAV OF MIAOBIAO IS BEGIN PROCESS(CLK) --由频率为3MHz的时钟产生频率为100Hz的时钟VARIABLE NUM:INTEGER RANGE 0 TO 15000;--定义计数器 VARIABLE Q:STD_LOGIC;

基于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.

学习verilog后的总结

关于这个学期学习verilog hdl语言后的小结在完成本次verilog大作业的过程中,我不仅学到了很多只靠看书本学不到的知识,而且体会到了团队协作的力量,在团队成员的合作下,经历了不少困难,终于完成了verilog的大作业,虽然过程并不是和想象中的一样,而且作业也与老师要求的有点差距,但是从中学习到了许多关于verilog的使用与仿真的基础知识,也对课上学到的语句有了更深的理解,并将其应用到了实际工程中,使自己的运用能力得到了很好的锻炼,对基本操作已经较熟练的掌握,对其中一些细节问题,如仿真时间的选取等也有了自己的理解。实践出真知,通过在软件上反复改程序、跑程序我也学会了很多只看书本发现不了的问题,锻炼了自己的解决问题能力。这对于今后的学习是有很大的帮助的。以下做一下简要总结: 这次的大作业是通过我们小组四个同学共同努力下完成的,其中有很多收获也有很多感受。这次的大作业给了我们一次很好的锻炼机会,通过这次大作业,我开始熟悉用verilog设计的最基本的方法和流程,课堂上学到的东西只有自己通过应用才能加深自己的理解,课堂上学到的并不是全部,要想真正的学好这门课,只有在实践中运用才能真正的体会到这门课的精髓,这次的大作业很好的验证了。 有一个外因也是给了我们的帮助,那就是网络的强大,在这个信息的时代,互联网的作用显而易见,如果能够充分得利用网络上海量的信息,掌握一定的检索技巧,就可以获得很多有价值的东西,比如参考别人的算法和程序段,观看关于Quartus II软件的使用教程视频。

这比起关起门来自己钻研要强上不少。对于如何使用verilog hdl写出可综合的代码真的是一件不容易的事情,而真正的可以写出可综合的代码确实还需要经过很长时间的锻炼。而对Quartus II的使用,感觉也只会得不多,还有很多功能诸如时序分析,逻辑分析,引脚分配等都不会使用。 在完成这次大作业的过程中充分感受到自己知识的不足以及学以致用的重要性,有很多不懂的地方,要通过不断的学习来提高自己,这正验证了学海无涯这句古话。这次的大作业是一次很好的实践。通过大家一起设计,大家都很有收获,不仅完成了作业,而且学到了知识,关键的是自己的自学能力有所提高,所以希望以后还有更多实践的机会,这对于我们的提高大有好处。 最后,我还得感谢我的队友们,这次作业的完成是我们共同努力的结果,我真正感受到了团队的力量,也体会到了老师为什么一定要求必须绝对完成的良苦用心。 11光电A1 朱 2014.01.01

相关主题
文本预览
相关文档 最新文档