当前位置:文档之家› verilog乒乓球大作业(仿真成功)

verilog乒乓球大作业(仿真成功)

verilog乒乓球大作业(仿真成功)
verilog乒乓球大作业(仿真成功)

v e r i l o g乒乓球大作业(仿

真成功)

-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

一任务描述

1 设计要求

左、右双方各持一按键作为“球拍”,实验板上一行8只发光二极管为乒乓球台,其中那只发光的发光二极管代表乒乓球所在位置。

设计如图1所示的乒乓球游戏实物图的模拟控制器。发球方最后一位LED 点亮,按下键表示发球,亮的灯依次向对方移动,当到达对方最后一位时0.5s 内对方必须按下按键表示接球,接球后LED灯向对方移动,否则输球。

接球时,LED没有亮到最后一位时就按下接球按键为犯规。输球或者犯规,对方加1分,率先加到11分者游戏胜出这一局。

2设计思路

考虑到游戏的复杂度,采用状态机来实现这些模式转换。用到8个状态,如下所示:

状态功能

S2球从甲方向乙方右移,若此时乙方接球

就给甲方加一分,并将球权给甲方

S3开始判断乙方是否在0.5S内接球

S4乙方发球

S5球从乙方向甲方左移,若此时甲方接球

就给乙方加一分,并将球权给乙方

S7用于接球后判断发球程序还加入了蜂鸣、用数码管显示分数和发球权等功能。

二结构框图

1 状态转移图

00

2 程序流程图

3 系统模块

三系统程序

module

pingpangok(state,clk2hz,rst,k_a,k_b,led8s,led7s1,led7s2,led7s3,led7s4,led7s5,speaker );

//clk2hz指一个2Hz的时钟输入, rst异步复位, k_a和k_b是比赛双方按键, speaker是蜂鸣器

//led8s是一排8个发光二极管代表球场, led7s1~4是4个显示分数的数码管, led7s5是显示发球权的数码管

input clk2hz,rst,k_a,k_b;

output [7:0] led8s;

output [6:0] led7s1,led7s2,led7s3,led7s4,led7s5;

output speaker;

output [2:0] state;

reg [7:0] led8s;

reg [6:0] led7s1,led7s2,led7s3,led7s4,led7s5;

reg [3:0] score_a,score_b;

reg [2:0] state;

reg speaker;

parameter s0=3'b000,//复位状态,也是判断发球权的状态;

s1=3'b001,//甲方发球;

s2=3'b010,//球从甲方向乙方右移,若此时乙方接球就给甲方加一分,并将球权给甲方;

s3=3'b011,//开始判断乙方是否在0.5S内接球;

s4=3'b100,//乙方发球;

s5=3'b101,//球从乙方向甲方左移,若此时甲方接球就给乙方加一分,并将球权给乙方;

s6=3'b110;//开始判断甲方是否在0.5S内接球;

s7=3'b111;//用于判断接球后发球;

//----------------游戏逻辑控制核心----------------------------------------------------------------------------

always @(posedge clk2hz) begin

case(state)

s7: begin

if(k_a)

state<=s1; //甲发球;

else if(k_b)

state<=s4;//乙发球;

else if(speaker)

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个采样点

modelsim和NCverilog的区别

Modelsim和NCverilog的比较 集成电路的发展趋势是,单位面积集成的晶体管的数目越来越多,可靠性越来越越高、稳定性越来越好。现在芯片集成度已经超出可人们的想象,有的芯片内部集成了数百万的晶体管,已经远远超出了人的大脑可以分析的范围。这就对EDA工具提出了更高的要求,不管是设计、仿真、综合软件的发展,都给集成电路工程师带来了巨大的便利。 modelsim是Mentor graphics公司推出的HDL代码仿真工具,也是业界最流行的HDL仿真工具之一。支持图形界面操作和脚本操作,常见的图形界面操作相对直观,但是由于重复性操作几率高、处理效率低、工程的非保存性,对于大规模的代码仿真不推荐使用;脚本操作完全可以克服以上的缺点,把常见的命令,比如库文件和RTL加载、仿真、波形显示等命令编辑成.do脚本文件,只需要让Modelsim运行.do文件即可以完成仿真,智能化程度高。 NCverilog是candence公司推出的Verilog HDL的仿真工具。NC-Verilog是Verilog-XL的升级版, 它采用Native-Compiled技术, 无论仿真速度, 处理庞大设计能力, 编辑能力, 记忆体容量和侦错环境都以倍数升级。C-Verilog是一个编译仿真器,它把Verilog代码编译成Verilog程序的定制仿真器。也就是它把Verilog 代码转换成一个C程序,然后再把该C程序编译成仿真器。因此它启动得稍微慢一些,但这样生成的编译仿真器运行得要比Verilog-XL的解释仿真器快很多。Ncverilog是shell版的,nclaunch是以图形界面为基础的,二者调用相同内核;Ncverilog的执行有三步模式和单步模式,在nclaunch中对应multiple step和single step;Ncverilog的三步模式为:ncvlog(编译) ncelab(建立snapshot文件) ncsim(对snapshot文件进行仿真)基于shell的ncverilog操作(尤其是单步模式)更适合于大批量操作,hncverilog的波形查看配套软件是simvision,其中包含原理图、波形、信号流等查看方式。 Ncverilog命令使用库文件或库目录 ex). ncverilog -f run.f -v lib/lib.v -y lib2 +libext+.v //一般编译文件在run.f 中, 库文件在lib.v中,lib2目录中的.v文件系统自动搜索使用库文件或库目录,只编译需要的模块而不必全部编译。 Verilog Testbench信号记录的系统任务: 1). SHM数据库可以记录在设计仿真过程中信号的变化. 它只在probes有效的时间内记录你set probe on的信号的变化。 ex). $shm_open("waves.shm"); //打开波形数据库 $shm_probe(top, "AS"); // set probe on "top" 第二个参数: A -- signals of the specific scrope

蔡觉平老师西电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 为时间计数的中间变量。整体设计方案如下:

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)

Ncverilog_的一些经验

Ncverilog 的一些经验 1.Verilog和Ncverilog命令使用库文件或库目录 ex). ncverilog -f run.f -v lib/lib.v -y lib2 +libext+.v //一般编译文件在run.f中, 库文件在lib.v中,lib2目录中的.v文件系统自动搜索使用库文件或库目录,只编译需要的模块而不必全部编译 2.Verilog Testbench信号记录的系统任务: 1). SHM数据库可以记录在设计仿真过程中信号的变化. 它只在probes有效的时间内记录你set probe on的信号的变化. ex). $shm_open("waves.shm"); //打开波形数据库 $shm_probe(top, "AS"); // set probe on "top", 第二个参数: A -- signals of the specific sc rope S -- Ports of the specified s cope and below, excluding library cells C -- Ports of the specified s cope and below, including library cells AS -- Signals of the specifie d scope and below, excluding library cells AC -- Signals of the specifie d scope and below, including library cells 还有一个 M ,表示当前scope的m emories, 可以跟上面的结合使用, "AM" "AMS" "AMC" 什么都不加表示当前scope的por ts; $shm_close //关闭数据库 2). VCD数据库也可以记录在设计仿真过程中信号的变化. 它只记录你选择的信号的变化. ex). $dumpfile("filename"); //打开数据库 $dumpvars(1, top.u1); //scope = top.u1, depth = 1 第一个参数表示深度, 为0时记录所有深度; 第二个参数表示scope,省略时表当前的scope. $dumpvars; //depth = all scope = all $dumpvars(0); //depth = all scope = current $dumpvars(1, top.u1); //depth = 1 scope = top. u1 $dumpoff //暂停记录数据改变,信号变化不写入库文件中 $dumpon //重新恢复记录 3). Debussy fsdb数据库也可以记录信号的变化,它的优势是可以跟debus sy结合,方便调试.

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 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传送到c

非常有用的将参数从verilog传送到c 自行寫一個System Task,能夠接受由Verilog的reg或wire傳給C的值。 Introduction 使用環境: Cadense NC-Verilog 5.4 + Visual C++ 6.0 在此文件,將學習到 1.如何將參數從Verilog傳到C? 2.如何撰寫簡單的compiletf? 3.如何從C抓到Verilog傳來的參數? show_value.c / C 1#include 2#include "vpi_user.h" 3 4PLI_INT32 show_value_compiletf(PLI_BYTE8 *user_data) { 5 vpiHandle systf_handle, arg_iterator, arg_handle; 6 PLI_INT32 arg_type; 7 8// obtain a handle to the system task instance 9 systf_handle = vpi_handle(vpiSysTfCall, NULL); 10if (systf_handle == NULL) { 11 vpi_printf("ERROR: $show_value failed to obtain systf handle\n"); 12 vpi_control(vpiFinish, 0); 13 14return -1; 15 } 16 17// obtain handles to system task arguments 18 arg_iterator = vpi_iterate(vpiArgument, systf_handle);

哈工大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后的总结

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

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

数字电子技术基础EDA大作业2终结报告(2016秋)

EDA大作业二终结报告 █████████████一、预习报告 二、阐述设计思路

1、键盘读入模块 键盘读入模块的作用是向下一模块(控制模块)传递按键是否按下以及按键值为多少。根据矩阵键盘的原理,检测行线上的电平值,可以判断矩阵键盘中有无按键按下。当检测到有按键被按下之后,对列线的电平值进行跑马灯式扫描(S1、S2、S3、S4状态,分别指扫描第1、2、3、4列的信号),若检测到某列有低电平则(进入S5状态)可以由当前的行线电平值和列线电平值确定所按键的值。对于长按键的设计,当检测到有按键时进入S5状态(有按键按下的状态),检测到按键还在被按下状态(行线电平值不为1111)的话,则不进行下一次扫描,直到检测到按键被松开(行线电平值为1111)时,进行下一次扫描(进入S0状态)。对于按键防抖的设计,当检测到行线电平值不为1111时,进入S1、S2、S3、S4状态时都再一次进行行线电平值的判断,如果此时行线电平值没有回到1111,则可以认定这次按键是有效的;若此时检测到行线电平值回到1111,则可以认定这是一个抖动,然后回到S0状态。对于是否有按键按下的输出(key_ready),定义中间变量flag1、flag2、flag3以及按键按下标志flag,flag1是flag的延时,flag2是flag的上升沿检测结果,flag3是flag2的延时,flag2在有按键输出的时候只保持一个时钟周期,由于采用非阻塞式赋值,在有按键按下时flag3会产生一个时钟周期的高电平,作为有按键按下的标志(也可以直接以key_busy作为下一级输入,不过要取key_busy得下降沿,不符合同步电路的设计要求)。 键盘读入模块状态机示意图 2、控制模块 控制模块的作用是根据键盘读入模块读入的值进行处理,向显示模块传递要在数码管上显示的数字。状态转化图如下。

EDA大作业实验报告

一、选题目的 大二学过数电之后大三接触EDA数电逻辑设计,老师上课主讲EDA中的VHDL 语言设计部分,上课听讲感觉认真编写程序,借助程序调试,功能/时序的波形仿真,结果应该不会有太偏的问题,个人感觉关键是在FPGA板上下载运行最好是现象明显直观,涉及的运算单元少的实验,所以我选择做流水灯,感觉老师布置的流水灯的题目要求太多了,我就算自定义一个流水灯吧,希望徐老师不要怪我能力有限。 二、设计目标 设计能让一排灯(8只)自动改变显示花样的控制系统。可将实验板上的一排发光二极管作为彩灯用。八个彩灯的变化方式有8种,分别实现1:从右向左灭灯2:从左向右灭灯 3:从右向左亮灯4:从左向右亮灯 5:从两侧向中间灭灯(两侧各一个) 6:从两侧向中间灭灯(两侧各两个) 7:从右侧向左侧亮灯(一侧两个) 8:交叉闪烁 按照实际生活中常见的流水灯变化,设计的这8种花形变化实现自动循环变化。 三、实现方案(包括原理框图和VHDL设计流程图)

四、设计过程(包括关键模块的仿真结果)VHDL library IEEE; use IEEE.STD_LOGIC_1164.all; useIEEE.STD_LOGIC_unsigned.all; entity led1 is port( sysclk: in std_logic; dout: out std_logic_vector(7downto 0) ); end led1; architecturejgt of led1 is signalcnt : std_logic_vector ( 7 downto 0); --variable count:integer RANGE 0 TO 7; signal count : std_logic_vector(5 DOWNTO 0); begin process(sysclk) begin if ( sysclk'event and sysclk = '1') then cnt<= cnt + 1; if (cnt = "11110111") then cnt<= "00000000" ; count<=count+1; end if ; end if; end process; process (count) begin case count is when "000000" =>dout<= "11111110"; when "000001" =>dout<= "11111101"; when "000010" =>dout<= "11111011"; when "000011" =>dout<= "11110111"; when "000100" =>dout<= "11101111"; when "000101" =>dout<= "11011111"; when "000110" =>dout<= "10111111"; when "000111" =>dout<= "01111111"; when "001000" =>dout<= "10111111"; when "001001" =>dout<= "11011111"; when "001010" =>dout<= "11101111"; when "001011" =>dout<= "11110111"; when "001100" =>dout<= "11111011";

NCveriog安装指南

Ncverilog 安装指南 一。eda安装环境的搭建(建议) 1 在主文件夹下建立soft文件夹,里面建立edasoft文件夹,在edasoft下建立source.source文件用来保存软件的配置。 2打开source.source文件,输入下面内容: export EDA_HOME=~/soft/edasoft 关闭保存。 3在终端执行: gedit ~/.bashrc 打开用户bash的配置文件,在文件最后新起一行,输入: source ~/soft/edasoft/source.source 保存关闭。 二。安装IUS(或者IFV)(内含ncverilog)工具 需要的工具: Float_Cadence_LicGen.tar IUS09.20.007L1P1.tar.gz 如下图: 安装环境:ubuntu11.10,已经安装了可能需要的一些包(在旋风处可以获取)。1.分别解压两个包,进入IUS09.20.007L1P1,在此目录下打开终端,运行:sudo chmod 777 SETUP.SH 然后再: ./SETUP.SH 就会如下图所示:

点击enter键直到出现: 在后面输入你要安装的目录,如:~/soft/edasoft/IUS 回车继续: 下来惠询问安装路径:

然后会跳出图形界面安装InstallScape: 点击next直到下图,选上所有安装项(除去含64bit字样的,那个是64bit的): 下一步安装:

安装完会提示是否配置,选yes: 选上所有进行配置。在询问是否配置lisence时选否:

之后完毕,close。 2、现在配置lisence。进入刚解压出来的Float_Cadence_LicGen文件夹: 修改all.dat的内容,只修改第二行,注意和你的IUS安装目录对应: 回到Float_Cadence_LicGen文件夹,在该文件夹下打开终端,输入如下指令: wine lmcrypt_cdslmd -i all.dat -o key.cadence -verfmt 6 -r 如下: 执行后会产生key.cadence文件。重命名为cadencelisence.dat,放到你的安装目录下:

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