EDA实验三 图形和Verilog混合输入的电路设计 实验报告 (1)

合集下载

图形和Verilog的电路设计

图形和Verilog的电路设计

实验六图形和Verilog HDL语言混合输入的电路设计一、 实验目的1、学习在QUARTUSII软件中模块符号文件的生成与调用。

2、掌握模块符号与模块符号之间的连线规则与方法。

3、掌握从设计文件到模块符号的创建过程。

二、 实验原理在层次化的设计文件中,经常需要将已经设计好的工程文件生成一个模块符号文件作为自己的功能模块符号在顶层调用,该符号就像图形设计文件中的任何其它宏功能符号一样可被高层设计重复调用。

本实验的实验原理就是用Verilog HDL语言分别实现50M信号源的分频、十进制、六进制模块,然后通过QUARTUSII软件合并成一个设计文件。

实现60进制的功能。

三、 实验内容在实验中,时钟信号为50MHZ,经过分频电路分频后得到一个较低的频率(1HZ)做为计数器的时钟频率进行计数器的加法运算。

得到的值在发光二级管上显示出来。

实验箱中的数字时钟模块、按键开关LED与FPGA的接口电路,以及与FPGA的管脚连接在前面的实验中都做了详细说明,这里不在赘述。

四、 实验步骤1、打开QUARTUSII软件,新建一个工程。

2、选择File>new命令,新建一个Verilog文件。

点击OK按钮确认,然后点击保存按钮,弹出一对话框,重命名为fenpin.v,保存。

在打开的文本编辑器中写分频程序代码。

3、选择File>new命令,新建一个Verilog文件。

点击OK按钮确认,然后点击保存按钮,弹出一对话框,重命名为counter10.v,保存。

在打开的文本编辑器中写十进制程序代码。

4、选择File>new命令,新建一个Verilog文件。

点击OK按钮确认,然后点击保存按钮,弹出一对话框,重命名为counter6.v,保存。

在打开的文本编辑器中写十进制程序代码。

5、在File菜单中选择Create/Update项,进而选择Create Symbol for Current File,点击确定按钮,即可创建一个代表刚才打开的设计文件功能的符号(.bsf),如图6-2所示。

verilog实验报告

verilog实验报告

verilog实验报告Verilog实验报告引言:Verilog是一种硬件描述语言(HDL),用于设计和模拟数字电路。

它是一种高级语言,能够描述电路的行为和结构,方便工程师进行数字电路设计和验证。

本实验报告将介绍我在学习Verilog过程中进行的实验内容和所获得的结果。

实验一:基本门电路设计在这个实验中,我使用Verilog设计了基本的逻辑门电路,包括与门、或门和非门。

通过使用Verilog的模块化设计,我能够轻松地创建和组合这些门电路,以实现更复杂的功能。

我首先创建了一个与门电路的模块,定义了输入和输出端口,并使用逻辑运算符和条件语句实现了与门的功能。

然后,我创建了一个测试模块,用于验证与门的正确性。

通过输入不同的组合,我能够验证与门的输出是否符合预期。

接下来,我按照同样的方法设计了或门和非门电路,并进行了相应的测试。

通过这个实验,我不仅学会了使用Verilog进行基本门电路的设计,还加深了对逻辑电路的理解。

实验二:时序电路设计在这个实验中,我学习了如何使用Verilog设计时序电路,例如寄存器和计数器。

时序电路是一种具有状态和时钟输入的电路,能够根据时钟信号的变化来改变其输出。

我首先设计了一个简单的寄存器模块,使用触发器和组合逻辑电路实现了数据的存储和传输功能。

然后,我创建了一个测试模块,用于验证寄存器的正确性。

通过输入不同的数据和时钟信号,我能够观察到寄存器的输出是否正确。

接下来,我设计了一个计数器模块,使用寄存器和加法电路实现了计数功能。

我还添加了一个复位输入,用于将计数器的值重置为初始状态。

通过测试模块,我能够验证计数器在不同的时钟周期内是否正确地进行计数。

通过这个实验,我不仅学会了使用Verilog设计时序电路,还加深了对触发器、寄存器和计数器的理解。

实验三:组合电路设计在这个实验中,我学习了如何使用Verilog设计组合电路,例如多路选择器和加法器。

组合电路是一种没有状态和时钟输入的电路,其输出只取决于当前的输入。

eda技术与veriloghdl实验报告

eda技术与veriloghdl实验报告

EDA技术与Verilog HDL实验报告学生姓名:樊奇峰学生学号:所在班级:10级电科(2)班实验老师:陈亮亮实验地点地点:理工楼实验一 EDA实验箱使用一.实验目的1.GW48教学实验系统原理与使用介绍2.熟悉QuartusII两种输入方式下编译、仿真简单的组合电路。

二.实验内容首先了解GW48系统使用注意事项以及GW48系统主板结构与使用方法,接着对各实验电路结构图特点与适用范围简述。

最后在QuartusII界面下,用文本输入和图形输入分别验证七选一多路选择器的功能。

三.程序清单文本输入如下所示:module mux71(a,b,c,d,e,f,g,s,y);input a,b,c,d,e,f,g;output y;input [2:0] s;reg y ;always @(a,b,c,d,e,f,g,s)case (s)0: y<=a;1: y<=b;2: y<=c;3: y<=d;4: y<=e;5: y<=f;6: y<=g;default: y<=a;endcaseendmodule图形输入如下所示:四、实验步骤1、新建一个名称为MUX71a的工程,并在该文件夹中新建一个的文件。

2、编译代码,编译成功后进行第三步,若不成功则查改代码中的错误。

3、在工程文件夹中新建一个的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。

4、验证输出端口波形是否达到七选一多路选择器的功能。

五、实验数据仿真波形如下图所示。

六、实验小结通过对EDA实验箱使用,了解了GW48教学实验系统原理与使用介绍;熟悉QuartusII两种输入方式下编译、仿真简单的组合电路。

实验二用原理图和VerilogHDL语言设计一位全加器一.实验目的熟悉在QuartusII下用原理图和VerilogHDL语言设计一位全加器。

二.实验内容在QuartusII下用原理图和VerilogHDL语言设计一位全加器,并编译、仿真验证其功能。

EDA实验三组合逻辑电路设计(一)--编译码器设计

EDA实验三组合逻辑电路设计(一)--编译码器设计

西安邮电学院实验中心实验报告院系电子工程学院班级学号姓名成绩教师签字实验日期实验名称组合逻辑电路设计(一)--编译码器设计_______________________________________________________一、实验目的二、实验所用仪表及主要器材三、实验原理简述四、实验测量记录:(如数据、表格、曲线、计算等)五、实验遇到的问题及解决办法:(余留问题,体会等)一、实验目的(1)熟悉组合逻辑电路的VHDL描述方法。

(2)掌握利用CPL器件实现组合逻辑数字电路的方法和过程。

(3)熟练掌握“case”语句与“if…else…”语句的用法。

二、实验所用仪表及主要器材PC,可编程逻辑实验电路板,下载线,USB电源线,双踪示波器,数字万用表,导线若干。

三、实验原理简述应用VHDL设计简单的逻辑电路四、实验内容在MAX+PULSII环境下,用VHDL语言按照输入—>编译—>仿真。

(1)8421BCD码转换为余3码转换表.在MAX+plusII 环境下,用VHDL 语言描述下列逻辑电路,并编译,仿真。

程序仿真结果:(2)设计一个优先编码器。

程序实现如下:仿真结果:五、实验结果见上述内容。

六、实验心得在本次实验中我学会了使用MAX+PLUSII软件的文本编程的方式设计电路。

在本次实验的文本编译环节中出现不少问题:(1)保存时文件名与实体名不一致,导致程序编译结果不正确。

(2)写程序时没有按照语法规则编写,使得文件编译频繁报错,标点的错误也会导致整个程序无法编译。

经过本次实验,加深了我对VHDL的文本编译设计的理解,今后我应该多练习MAX+PLUSII软件以减少错误。

EDA实验报告完结版

EDA实验报告完结版

EDA实验报告完结版一、实验目的本次 EDA 实验的主要目的是通过实际操作和设计,深入理解和掌握电子设计自动化(EDA)技术的基本原理和应用。

具体而言,包括熟悉 EDA 工具的使用方法,学会运用硬件描述语言(HDL)进行逻辑电路的设计与描述,以及通过综合、仿真和实现等流程,将设计转化为实际的硬件电路,并对其性能进行评估和优化。

二、实验环境本次实验所使用的 EDA 工具为_____,该工具提供了丰富的功能模块和强大的设计支持,包括原理图编辑、HDL 代码编写、综合、仿真和下载等。

实验所使用的硬件平台为_____开发板,其具备多种接口和资源,便于对设计的电路进行实际验证和测试。

三、实验内容1、基本逻辑门电路的设计与实现使用 HDL 语言(如 Verilog 或 VHDL)设计常见的基本逻辑门电路,如与门、或门、非门等。

通过编写代码,对逻辑门的输入输出关系进行描述,并进行综合和仿真,验证设计的正确性。

2、组合逻辑电路的设计与实现设计并实现较为复杂的组合逻辑电路,如加法器、减法器、编码器、译码器等。

运用 HDL 语言描述电路的功能,进行综合和仿真,确保电路在各种输入情况下的输出结果符合预期。

3、时序逻辑电路的设计与实现设计常见的时序逻辑电路,如计数器、寄存器、移位寄存器等。

在设计过程中,考虑时钟信号、同步复位和异步复位等因素,通过仿真验证时序逻辑的正确性,并对电路的性能进行分析。

4、有限状态机(FSM)的设计与实现设计一个有限状态机,实现特定的功能,如交通信号灯控制器、数字密码锁等。

明确状态转移条件和输出逻辑,通过编写 HDL 代码实现状态机,并进行综合和仿真,验证其功能的准确性。

5、综合与优化对设计的电路进行综合,生成门级网表,并通过优化工具对电路进行面积、速度等方面的优化,以满足特定的设计要求。

6、硬件实现与测试将综合后的设计下载到硬件开发板上,通过实际的输入输出信号,对电路的功能进行测试和验证。

观察电路在实际运行中的表现,对出现的问题进行分析和解决。

EDA实验报告1组合逻辑电路的设计

EDA实验报告1组合逻辑电路的设计

学院电子系实验报告学生姓名:班级:学号:课程:EDA技术实用教程一、实验题目:组合逻辑电路的设计二、实验地点:三、实验目的:1.熟悉QuartusⅡ的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。

2.加深FPGA\CPLD设计的过程,并比较原理图输入和文本输入的优劣。

四、实验内容:1.首先利用QuartusⅡ完成2选1多路选择器(如图S1-1)的文本编辑输入(mux21a.vhd)和仿真测试等步骤。

最后在实验系统上进行硬件测试,验证本项设计的功能。

图S1-12.将此多路选择器看成是一个元件mux21a,利用原理图输出法完成图s1-2,并将此文件放在同一目录中。

图s1-2编译、综合、仿真本例程,并对其仿真波形作出分析说明。

最后在实验系统上进行硬件测试,验证本项设计的功能。

3.七段数码管译码器(Decoder)七段数码管译码器(Decoder)的输入为4位二进制代码,输出为7个表征七段数码管代码的状态信号。

下面为一个七段数码管译码器的VHDL源代码模型:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY display ISPORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END;ARCHITECTURE ONE OF display ISBEGINPROCESS(A)BEGINCASE A ISWHEN "0000"=>LED7S<="0111111";--X"3F"->0WHEN "0001"=>LED7S<="0000110";--X"06"->1WHEN "0010"=>LED7S<="1011011";--X"5B"->2WHEN "0011"=>LED7S<="1001111";--X"4F"->3WHEN "0100"=>LED7S<="1100110";--X"66"->4WHEN "0101"=>LED7S<="1101101";--X"6D"->5WHEN "0110"=>LED7S<="1111101";--X"7D"->6WHEN "0111"=>LED7S<="0000111";--X"07"->7WHEN "1000"=>LED7S<="1111111";--X"7F"->8WHEN "1001"=>LED7S<="1101111";--X"6F"->9WHEN "1010"=>LED7S<="1110111";--X"77"->10WHEN "1011"=>LED7S<="1111100";--X"7C"->11WHEN "1100"=>LED7S<="0111001";--X"39"->12WHEN "1101"=>LED7S<="1011110";--X"5E"->13WHEN "1110"=>LED7S<="1111001";--X"79"->14WHEN "1111"=>LED7S<="1110001";--X"71"->15WHEN OTHERS=>NULL;END CASE;END PROCESS;END;编译、综合、仿真本例程,并对其仿真波形作出分析说明。

EDA技术实验报告(1)

EDA技术实验报告(1)

实验一利用原理图输入法设计4位全加器一、实验目的:掌握利用原理图输入法设计简单组合电路的方法,掌握MAX+plusII的层次化设计方法。

通过一个4位全加器的设计,熟悉用EDA软件进行电路设计的详细流程。

二、实验原理:一个4位全加器可以由4个一位全加器构成,全加器的进位以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的低位进位输入信号cin相接。

1位全加器f-adder由2个半加器h-adder和一个或门按照下列电路来实现。

半加器h-adder由与门、同或门和非门构成。

四位加法器由4个全加器构成1234三、实验内容:1. 熟悉QuartusII软件界面,掌握利用原理图进行电路模块设计的方法。

QuartusII设计流程见教材第五章:QuartusII应用向导。

2.设计1位全加器原理图(1)生成一个新的图形文件(file->new->graphic editor)(2)按照给定的原理图输入逻辑门(symbol->enter symbol)(3)根据原理图连接所有逻辑门的端口,并添加输入/输出端口(4)为管脚和节点命名:在管脚上的PIN_NAME处双击鼠标左键,然后输入名字;选中需命名的线,然后输入名字。

(5)创建缺省(Default)符号:在File菜单中选择Create Symbol Files for Current File项,即可创建一个设计的符号,该符号可被高层设计调用。

3.利用层次化原理图方法设计4位全加器(1)生成新的空白原理图,作为4位全加器设计输入(2)利用已经生成的1位全加器的缺省符号作为电路单元,设计4位全加器的原理图.4.新建波形文件(file->new->Other Files->Vector Waveform File),保存后进行仿真(Processing ->Start Simulation),对4位全加器进行时序仿真。

EDA实验报告(DOC)

EDA实验报告(DOC)

西华大学实验报告第组西华大学实验报告(理工类)开课学院及实验室:电气与电子信息信息学院实验时间:年月日学生姓名学号成绩学生所在学院电气与电子信息学院年级/专业/班课程名称EDA技术课程代码106001589实验一、Quartus II软件使用初步与简单组实验项目名称项目代码合电路的设计指导教师林竞力项目学分一、实验目的1.熟习Quartus II软件的使用;2. 掌握用原理图输入法和硬件描述语言(Verilog HDL)两种方法来设计逻辑电路;3. 对设计电路作硬件验证;二、实验原理1.用原理图输入法来设计一个半加器电路参照图1-1(P57)来完成一个半加器电路的设计,其中a、b 为一位的加数与被加数信号,he、jw分别为和与进位信号。

存盘仿真后,观察仿真波形,并用硬件验证电路的功能。

图1-1 半加器电路原理图2.Quartus II软件目前版本已达到10.0以上,但对于初学者来说采用6.0或7.1版本最为适合。

6.0与7.1版本相比更稳定,因此本实验采用Quartus II 6.0,而7.1版本界面与6.0非常相似,学会6.0版本的使用也就学会了7.1版本的使用。

3. Quartus II软件设计电路流程:(1)新建一个工程:每设计一个电路就必须新建一个工程!所有的设计文件都装在工程目录中,并由软件管理。

(2)设计输入:告诉软件你要设计的电路是什么。

A.原理图设计方法-----用原理图编辑器画出电路图。

B.本文输入-----用文本编辑器采用硬件语言描述电路(电路主流设计方式)。

(3)编译将设计电路的功能与PLD芯片结合,并提取出仿真所需的时序参数。

(4)仿真软件验证电路功能是否实现。

(5)编程、配置与硬件测试用下载电缆完成器件的编程与配置,做硬件测试。

原理图输入法设计半加器电路与描述语言设计3-8译码器区别在于流程的第二步设计输入。

三、实验设备、仪器及材料电脑、EDA软件(Quartus II)、实验箱、下载电缆、连接导线。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六图形和Verilog HDL语言混合输入的电路设计
电子1602班王文涛1605020226
一、实验目的
1、学习在QUARTUSII软件中模块符号文件的生成与调用。

2、掌握模块符号与模块符号之间的连线规则与方法。

3、掌握从设计文件到模块符号的创建过程。

二、实验原理
在层次化的设计文件中,经常需要将已经设计好的工程文件生成一个模块符号文件作为自己的功能模块符号在顶层调用,该符号就像图形设计文件中的任何其它宏功能符号一样可被高层设计重复调用。

本实验的实验原理就是用Verilog HDL语言分别实现50M信号源的分频、十进制、六进制模块,然后通过QUARTUSII软件合并成一个设计文件。

实现60进制的功能。

三、实验内容
在实验中,时钟信号为50MHZ,经过分频电路分频后得到一个较低的频率(1HZ)做为计数器的时钟频率进行计数器的加法运算。

得到的值在发光二级管上显示出来。

实验箱中的数字时钟模块、按键开关LED与FPGA的接口电路,以及与FPGA的管脚连接在前面的实验中都做了详细说明,这里不在赘述。

四、实验步骤
1、打开QUARTUSII软件,新建一个工程。

2、选择File>new命令,新建一个Verilog文件。

点击OK按钮确认,然后点击保存按钮,
弹出一对话框,重命名为fenpin.v,保存。

在打开的文本编辑器中写分频程序
代码。

3、选择File>new命令,新建一个Verilog文件。

点击OK按钮确认,然后点击保存按钮,
弹出一对话框,重命名为counter10.v,保存。

在打开的文本编辑器中写十进制
程序代码。

4、选择File>new命令,新建一个Verilog文件。

点击OK按钮确认,然后点击保存按钮,
弹出一对话框,重命名为counter6.v,保存。

在打开的文本编辑器中写十进制
程序代码。

5、在File菜单中选择Create/Update项,进而选择Create Symbol for Current File,
点击确定按钮,即可创建一个代表刚才打开的设计文件功能的符号(.bsf),如图6-2所示。

如果该文件对应的符号文件已经创建过,则执行该操作时会弹出提示信息,询
问是否要覆盖现存的符号文件。

用户可以根据自己的意愿进行选择。

图6-2 从现行文件创建模块符号文件
6、用同样的方法对其它设计文件(counter10.V、counter6.V)进行模块符号文件的创
建。

7、模块符号文件创建完成后,再新建一个图形编辑文件,打开图形编辑器对话框。

在图
形编辑器窗口的工件区双击鼠标的左键,或点击图中的符号工具按钮,或选择菜单Edit>Insert Symbol…,则弹出如图6-3所示的Symbol对话框。

图6-3 Symbol对话框
8、在Symbol对话框(图6-3)中的Project项下会出现前面创建的模块符号文件(fenpin、
counter10、counter6),我们现在就可以任意调用这些功能模块符号文件。

9、选取这些模块符号文件放置到工作区,调入需要的模块符号以后,进行符号之间的连
线,以及放置输入、输出或双向引脚。

需要说明的是,在这个实验中,做为同步使能端的信号EN我们加入了一个VCC信号,使使能端信号EN有效。

所有设计完成后的电路如图6-4所示。

图6-4 设计图形符号文件
10、对自己编写的图形符号输入文件程序进行保存,然后编译并仿真,对程序的错误进
行修改。

11、编译仿真无误后,依照拨动开关、LED与FPGA的管脚连接表(表1-1)或参照附
录进行管脚分配。

表6-1是示例程序的管脚分配表。

分配完成后,再进行全编译一次,以使管脚分配生效。

表6-1 端口管脚分配表
12、用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。

观察实验结果是否与
自己的编程思想一致。

五、实验现象与结果
以设计的参考示例为例,当设计文件加载到目标器件后,则八位LED发光二极管按一定的速率开始变化,按复位键显示的数值又从0开始。

六、实验报告
分频模块
module fenpin(Clk,clkout);
input Clk;
output clkout;
reg clkout;
reg [31:0] Cout; //always 语句里赋值需要定义为 reg 类型
reg Clk_En; //always 语句里赋值需要定义为 reg 类型
initial //赋初值
clkout<=0;
always @(posedge Clk )
begin
Cout <= (Cout == 32'd50000_000) ? 32'd0 : (Cout + 32'd1);
Clk_En <= (Cout >= 32'd25000_000) ? 1'd1 : 1'd0; //把脉冲源 50Mhz 分频为 1hz clkout<=Clk_En;
end
endmodule
注:如果用软件进行仿真,没有必要进行 50 分频把对应的程序改为
begin
Cout <= (Cout == 32'd2) ? 32'd0 : (Cout + 32'd1);
Clk_En <= (Cout >= 32'd1) ? 1'd1 : 1'd0; clkout<=Clk_En;
end
即可
十进制模块
module counter10( Clk, EN, RET, CQ,OUT);
input Clk;
input EN,RET;
output [3:0] CQ;
output OUT;
reg OUT;
/*---------------------------------------------------*/ wire Rst_n;
assign
Rst_n = RET;
/*---------------------------------------------------*/ reg[3:0] Led;
reg Clk_En;
always @(posedge Clk or negedge Rst_n)
begin
if(~Rst_n)
begin
OUT<=0;
Led <= 4'd0;
end
else
begin
Clk_En <= Clk;
if(Clk_En&EN) //==0.5s
begin
begin
begin
if(Led>=4'd9)
OUT<=1'd1;
else
OUT<=1'd0;
if(Led<=4'd8)
Led <= Led + 3'd1;
else
Led<=4'd0;
end
end
end
end
assign
CQ = Led;
Endmodule
六进制模块
module counter6 (Clk,EN,RET, CQ );
input Clk;
input EN,RET;
output [3:0] CQ;
/*---------------------------------------------------*/ wire Rst_n;
assign
Rst_n = RET;
/*---------------------------------------------------*/ reg[3:0] Led;
reg Clk_En;
always @(posedge Clk or negedge Rst_n)
begin
if(~Rst_n)
begin
Clk_En <= 1'd0;
Led <= 4'd0;
end
begin
//Clk_En <= Clk;
if(EN) //==0.5s
begin
if(Led<=4'd4)
Led <= Led + 3'd1;
else
Led<=4'd0;
end
end
end
/*---------------------------------------------------*/
assign
CQ = Led;
/*---------------------------------------------------*/
endmodule
总结:通过本次实验更清楚了如何使用Verilog语言进行编程,也更好的掌握了软件的操作。

相关文档
最新文档