VerilogHDL硬件描述语言实验报告
- 格式:doc
- 大小:134.00 KB
- 文档页数:30
《数字系统设计与Verilog HDL》实验报告(五)班级: 自动1003班**: **学号: ********实验五、自动售饮料机系统设计一、实验目的1、了解及掌握状态机的基本构成用法;二、通过ModelSim软件编写程序, 用状态机可以编程设计简单的自动控制系统。
三、实验内容四、设计一个自动售饮料机。
假定每瓶饮料售价为2.5元, 可使用两种硬币, 即5角和1元, 机器有找零功能。
五、机器设计有2个投币孔, 可用2个按键来代替。
还设有2个输出孔, 分别输出饮料和找零, 提示用户取走饮料和零钱。
六、实验步骤及源程序新建工程及文件, 分别添加设计程序及测试程序, 进行编译及纠错, 编译通过后运行程序仿真进行调试得出结果。
设计模块:module sell(yi_yuan,wu_jiao, get,half_out,sell_out,reset,clk);parameter idle=0, half=1, one=2,two=3,three=4;input yi_yuan,wu_jiao,reset,clk;output get,half_out,sell_out;reg get,half_out,sell_out;reg[2:0] s;always @(posedge clk)beginif(reset)beginsell_out=0; get=0; half_out=0; s=idle;endelsecase(s)idle: beginsell_out=0; get=0; half_out=0;if(wu_jiao) s=half;else if(yi_yuan)s=one;endhalf: beginif(wu_jiao) s=one;else if(yi_yuan)s=two;endone: beginif(wu_jiao) s=two;else if(yi_yuan)s=three;endtwo: beginif(wu_jiao) s=three;else if(yi_yuan)beginsell_out=1;get=1; s=idle;endendthree: beginif(wu_jiao)beginsell_out=1; get=1; s=idle;endelse if(yi_yuan)beginsell_out=1;get=1;half_out=1; s=idle;endenddefault:beginsell_out=0; get=0; half_out=0; s=idle; endendcaseendendmodule测试模块:`timescale 1ns/1nsmodule sell_top;reg yi_yuan,wu_jiao,reset,CLK;wire get,half_out,sell_out;always #50 CLK=~CLK;initialbeginCLK =0; reset=1;#100 reset=0;yi_yuan=0;wu_jiao=0;endalways@(posedge CLK)beginwu_jiao={$random}%2;#50 wu_jiao=0;endalways@(posedge CLK)beginif(!wu_jiao)yi_yuan=1;#50 yi_yuan=0;endsell m(.yi_yuan(yi_yuan),.wu_jiao(wu_jiao), .get(get),.half_out(half_out),.sell_out(sell_out),.reset(reset),.clk(CLK));endmodule七、实验结果八、实验心得体会由于老师在实验前已经很详细的为我们讲解了这次实验的要点和要注意的问题, 所以这次实验我们完成的还是很成功的。
第1篇一、实验目的1. 熟悉可编程逻辑器件(FPGA)的基本原理和操作方法。
2. 掌握使用FPGA进行数字电路设计的流程。
3. 学会使用FPGA进行简单数字电路的设计与实现。
二、实验器材1. FPGA开发板2. 编译器软件(如Xilinx ISE、Vivado等)3. 实验指导书4. 实验数据线三、实验原理可编程逻辑器件(FPGA)是一种基于半导体工艺的可编程数字电路,具有高集成度、高速度、可重构性强等特点。
FPGA通过内部逻辑单元(如查找表、触发器等)来实现各种数字电路功能。
本实验主要涉及以下原理:1. 数字电路基本原理2. 可编程逻辑器件(FPGA)的基本结构和工作原理3. 编译器软件的使用方法四、实验步骤1. 熟悉开发板(1)认识开发板上的各个模块,如时钟模块、输入输出模块、存储器模块等。
(2)了解开发板上各个模块的功能和作用。
2. 设计数字电路(1)根据实验要求,设计所需的数字电路。
(2)使用原理图或HDL语言进行电路描述。
3. 编译与下载(1)使用编译器软件对设计的数字电路进行编译。
(2)生成比特流文件。
(3)将比特流文件下载到FPGA中。
4. 测试与验证(1)观察FPGA上各个模块的输出信号,验证电路功能是否正确。
(2)使用示波器等仪器进行波形观察,进一步验证电路功能。
五、实验内容1. 设计一个4位全加器(1)原理图设计:使用原理图编辑器设计4位全加器电路。
(2)HDL语言设计:使用HDL语言描述4位全加器电路。
(3)编译与下载:将设计的电路编译成比特流文件,下载到FPGA中。
(4)测试与验证:观察FPGA上各个模块的输出信号,验证4位全加器电路功能是否正确。
2. 设计一个8位奇偶校验器(1)原理图设计:使用原理图编辑器设计8位奇偶校验器电路。
(2)HDL语言设计:使用HDL语言描述8位奇偶校验器电路。
(3)编译与下载:将设计的电路编译成比特流文件,下载到FPGA中。
(4)测试与验证:观察FPGA上各个模块的输出信号,验证8位奇偶校验器电路功能是否正确。
vhdl实验报告VHDL实验报告引言:VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,广泛应用于数字电路设计和仿真。
本篇实验报告将介绍我在VHDL实验中的学习和实践经验,包括实验目的、实验过程、实验结果以及对VHDL的理解和展望。
一、实验目的VHDL实验的主要目的是让我们掌握VHDL语言的基本语法和使用方法,能够利用VHDL描述数字电路,并通过仿真和综合工具进行验证和实现。
通过这些实验,我们可以深入了解数字电路的原理和设计方法,提高我们的逻辑设计能力和工程实践能力。
二、实验过程在实验过程中,我们首先学习了VHDL的基本语法,包括实体声明、端口声明、信号声明等。
然后,我们通过实例学习了VHDL的建模方法,包括组合逻辑电路的建模和时序逻辑电路的建模。
在组合逻辑电路的建模中,我们学习了使用逻辑运算符和条件语句描述电路的功能;在时序逻辑电路的建模中,我们学习了使用过程语句和时钟信号描述电路的状态转换。
在学习了VHDL的基础知识后,我们开始进行实验设计。
我们选择了一个简单的数字电路,如4位加法器,来进行实验验证。
首先,我们通过VHDL语言描述了加法器的功能和结构,包括输入端口、输出端口和中间信号。
然后,我们使用仿真工具进行了功能仿真,验证了加法器的正确性。
接着,我们使用综合工具将VHDL代码综合成门级电路,并进行了时序仿真和时序优化,验证了加法器的时序正确性和性能。
三、实验结果通过实验,我们成功地实现了4位加法器的功能,并验证了其正确性和性能。
在功能仿真中,我们输入了不同的测试数据,观察了输出结果,发现加法器能够正确地进行加法运算,并得到了正确的结果。
在时序仿真中,我们观察了电路的时序行为,包括输入信号的变化、输出信号的响应和中间信号的传播延迟等,发现加法器能够在时序上满足要求,并且具有较好的性能。
硬件描述语言实验报告——四位加法器实验目的和要求:本次实验的目的是实现四位加法器的硬件描述语言,加深对数字电路的理解和PWM设计的学习。
要求在Vivado环境下实现对四位加法器的设计,能够正确地实现两个四位二进制数之间的加法操作,同时需要能够通过外接开关控制输入的数字。
实验准备工作:在进行本次实验前,首先需要对数字电路、FPGA开发板和Vivado环境有一定的了解:数字电路:是指由一些二进制电子、电气或电子元件通过布线连接而成的电路,可以根据输入信号的不同输出不同的电信号。
(如AND门、OR门、NOT门、NAND门等)FPGA开发板:是一种可编程逻辑器件,可以在硬件级别上实现数字电路。
通过FPGA 开发板,我们可以将数字电路的设计和实现转化为程序设计和实现,有效地降低了数字电路的设计和实现的复杂度。
Vivado环境:是一种FPGA编程工具,可以进行FPGA设计、仿真、实现和验证。
通过Vivado环境,我们可以实现对数字电路的开发和调试。
实验步骤:根据本次实验的要求,在Vivado环境下完成了对四位加法器的硬件描述语言编写与实现。
在实验过程中,我们需要进行以下步骤:1.创建新的工程并添加源文件在Vivado环境下,首先需要创建一个新的工程。
在创建工程的过程中,需要设定工程的名称、类型、硬件平台和绑定一个新的目录。
创建完工程后,我们需要将本次实验所需要的源文件添加到新创建的工程中。
这些文件包括:•top.v:顶层模块文件,将各个模块串联在一起。
•add.v:加法器模块,用于实现四位加法器的加法运算。
•switch.v:开关模块,用于控制输入数字。
2.对各模块进行修改和调试完成对源文件的添加后,我们便可以对各个模块进行修改和调试,以确保能够正确地实现四位加法器的加法运算。
在进行修改和调试时,我们需要根据所学的数字电路知识,利用逻辑门、时钟、寄存器等基本单元,将四位加法器进行分解,逐一实现每一部分的设计:•开关模块的设计:开关模块是本次实验中的输入模块,负责输入两个四位数。
一、实验目的通过此设计的编程和下载运行,初步掌握Verilog HDL语言的always 块语句及基本编程结构。
二、实验过程(1)新建工程;通过“file”→“new project wizard…”菜单命令启动新项目向导,利用向导,建立一个新项目。
(2)输入设计程序在file菜单下,单击“new”命名,弹出对话框,选择Verilog HDL File 选项,建立Verilog HDL文件,输入下面程序:module liushuideng(ledout,clk);output[8:0]ledout;input clk;reg[8:0]ledout;reg[23:0]counter;initialledout=8'b11111111;always@(posedge clk)begincounter=counter+1;if(counter==24'b110000000000000000000000)beginledout=ledout<<1;if(ledout==8'b00000000)ledout=8'b11111111;counter=0;endendendmodule(3)指定管脚和设置不用引脚启动pin planner工具,弹出对话框,在“location”列,选择要分配的位置,为每个电路端子都分配适当的脚位。
在Assignments菜单下,单击Device…命令,进入Device & Pin Options对话框,在切换到Unused Pins页,在Reserved all unused pins栏目中,选择As input tri-stated,回到Setting对话框,单击“确定”。
(4)编译在processing菜单下,单击Start Compilation命令,开始编译项目,若编译成功,单击“确定”。
(5)仿真在file菜单下,单击“new”,弹出对话框,切换到other files页。
时序逻辑电路的Verilog HDL 实现一.实验要求(1):编写JK 触发器、8位数据锁存器、数据寄存器的Verilog HDL 程序,并实现其仿真及其测试程序;(2):在实验箱上设计含异步清零和同步使能的计数器。
(3):进行波形仿真测试后;画出仿真波形。
(4):写出实验心得二.实验内容:(1)1.JK 触发器的元件符号如图7.14所示,其中J 、K 是数据输入端,CLR 是复位控制输入端,当CLR=0时,触发器的状态被置为0态;CLK 是时钟输入端;Q 和QN 是触发器的两个互补输出端。
JK 触发器的状态方程为Q n+1 =J Q n +K Q nJK 触发器的verilog HDL 程序module jkff_rs(clk,j,k,q,rs,set); input clk,j,k,set,rs;output reg q;always@(posedge clk,negedge rs,negedge set)begin if(!rs) q<=1'b0;else if(!set) q<=1'b1;else case({j,k})2'b00:q<=q;2'b01:q<=1'b0;2'b10:q<=1'b1;2'b11:q<=~q;default:q<=1'bx;endcaseendendmoduleJK 触发器的功能:带异步清0,异步置1(低电平有效)JK 触发器的仿真结果JK 触发器的元件符号2.8位数据锁存器锁存器元件符号如图所示。
CLR是复位控制输入端,当CLR=0时,8位数据输出Q[7..0]=00000000。
ENA是使能控制输入端,当ENA=1时,锁存器处于工作状态,输出Q[7..0]=D[7..0];ENA=0时,锁存器的状态保持不变。
OE是三态输出控制端,当OE=1时,输出为高阻态;OE=0时,锁存器为正常输出状态。
一、实验目的1. 理解和掌握数字电路设计的基本原理和方法。
2. 学会使用FPGA(现场可编程门阵列)进行硬件设计。
3. 提高实际动手能力和问题解决能力。
4. 熟悉硬件描述语言(HDL)VHDL或Verilog的使用。
二、实验环境1. 开发平台:Xilinx Vivado 2022.22. 硬件设备:Xilinx Zynq-7000 SoC 开发板3. 软件工具:VHDL/Verilog 编辑器、仿真工具ModelSim、FPGA 编译器三、实验内容本次实验以设计一个简单的数字信号处理系统为例,包括以下模块:1. 数据输入模块2. 数据处理模块3. 数据输出模块四、实验步骤1. 需求分析根据实验要求,设计一个能够对输入数据进行简单处理的数字信号处理系统。
具体要求如下:- 输入数据为8位二进制数。
- 处理模块为简单的加法运算。
- 输出数据为处理后的结果。
2. 模块设计根据需求分析,将系统分为三个模块:- 数据输入模块:负责读取输入数据。
- 数据处理模块:负责执行加法运算。
- 数据输出模块:负责输出处理后的数据。
3. 代码编写使用VHDL或Verilog语言编写各模块代码。
```verilog// 数据输入模块module data_input(input clk, // 时钟信号input reset, // 复位信号output reg [7:0] data_in // 输入数据);always @(posedge clk or posedge reset) begin if (reset) begindata_in <= 8'b0;end else begin// 读取输入数据,此处省略具体实现endendendmodule// 数据处理模块module data_process(input [7:0] data_in, // 输入数据output reg [7:0] data_out // 输出数据);always @(data_in) begindata_out = data_in + 8'b1; // 简单的加法运算 endendmodule// 数据输出模块module data_output(input clk,input reset,input [7:0] data_out,output reg [7:0] data_display // 显示输出数据);always @(posedge clk or posedge reset) beginif (reset) begindata_display <= 8'b0;end else begindata_display <= data_out;endendendmodule```4. 仿真验证使用ModelSim进行仿真,验证各模块功能。
EDA技术与Verilog HDL技术实验报告班级:09电信实验班姓名:虞鸿鸣组别:Q09610137实验:交通灯控制一、实验目的:1、运用Verilog HDL综合编辑软件实现相应功能;2、进一步使用EDA技术解决实际问题;3、进一步使用EDA工具箱,提高对硬件电路的认识。
二、实验仪器PC计算机、EDA实验工具箱三、简要原理1. 能显示十字路口东西、南北两个方向的红、黄、绿的指示状态用两组红、黄、绿三色灯作为两个方向的红、黄、绿灯。
变化规律为:东西绿灯,南北红灯→东西黄灯,南北红灯→东西红灯,南北绿灯→东西红灯,南北黄灯→东西绿灯,南北红灯……依次循环。
2. 能实现正常的倒计时功能用两组数码管作为东西和南北方向的允许或通行时间的倒计时显示,显示时间为红灯45秒、绿灯40秒、黄灯5秒。
3. 能实现紧急状态处理的功能(1) 出现紧急状态(例如消防车,警车执行特殊任务时要优先通行)时,两路上所有车禁止通行,红灯全亮;(2) 显示到计时的两组数码管闪烁;(3) 计数器停止计数并保持在原来的状态;(4) 特殊状态解除后能返回原来状态继续运行。
4. 能实现系统复位功能系统复位后,东西绿灯,南北红灯,东西计时器显示40秒,南北显示45秒。
5. 用VHDL语言设计符合上述功能要求的交通灯控制器,并用层次化设计方法设计该电路。
6. 控制器、置数器的功能用功能仿真的方法验证,可通过有关波形确认电路设计是否正确。
7. 完成电路全部设计后,通过系统实验箱下载验证设计课题的正确性。
四、设计思路EN、CLK、RST、URGEN分别为使能信号、时钟信号、复位信号和紧急情况信号;num1,num2分别为东西方向的倒计时和南北方向的倒计时,两个八位数码管,硬件接有译码芯片;light1,light2分别为东西方向的交通灯和南北方向的交通灯中红、黄、绿三色位置;tim1,tim2分别为东西和南北方向的交通的灯控制信号,高电平时有效;pb1,pb2分别为寄存紧急情况前交通灯状态变量的标志信号,高电平有效;state1,state2分别为东西、南北方向的交通灯状态信号,每个方向有三种状态,即00、01、11;五、源代码及注析module TRAFFIC_LI(EN,CLK,RST,URGEN,num1,num2,light1,light2);input EN,CLK,RST,URGEN;//EN、CLK、RST、URGEN分别为使能信号、时钟信号、复位信号和紧急情况信号output[7:0] num1,num2;//num1,num2分别为东西方向的倒计时和南北方向的倒计时,两个八位数码管,硬件接有译码芯片output[2:0] light1,light2;//light1,light2分别为东西方向的交通灯和南北方向的交通灯中红、黄、绿三色位置reg tim1,tim2,pb1,pb2;//tim1,tim2分别为东西和南北方向的交通的灯控制信号,高电平时有效//pb1,pb2分别为寄存紧急情况前交通灯状态变量的标志信号,高电平有效reg[1:0]state1,state2;//state1,state2分别为东西、南北方向的交通灯状态信号,每个方向有三种状态,即00、01、11reg[2:0]light1,light2,light3,light4;//light3,light4用以寄存紧急情况前交通灯状态reg[7:0] num1,num2;//现实时间寄存reg[7:0] red1,red2,green1,green2,yellow1,yellow2;//东西南北方向三种颜色的交通灯亮的时间always @(EN)if(!EN)begin //设置计数初值green1<=8'b01000000;//绿灯40Sred1<=8'b01000000;//红灯40Syellow1<=8'b00000101;//黄灯5Sgreen2<=8'b01000000;red2<=8'b01000000;yellow2<=8'b00000101;endalways @(posedge CLK )beginif(!URGEN)beginlight3<=light1;endif(RST)//东西方向复位控制beginlight1<=3'b001; //亮绿灯num1<=green1;//时间为40Sendelse if(URGEN) //东西方向紧急情况控制beginlight1<=3'b100; //亮红灯//计数暂停pb1<=1;endelse if(pb1)beginlight1<=light3;pb1<=0;endelse if(EN)begin //使能有效开始控制计数if(!tim1) //开始控制begin //东西方向交通灯点亮控制tim1<=1;case(state1)2'b00:beginnum1<=green1;light1<=3'b001;state1<=2'b01;end//绿灯亮40S,跳转至下一状态2'b01:beginnum1<=yellow1-1;light1<=3'b010;state1<=2'b10;end//黄灯亮5秒,跳转至下一状态2'b10:beginnum1<=red1+5;light1<=3'b100;state1<=2'b00;end//红灯亮45S,跳转至初状态default:light1<=3'b100;//其他情况亮红灯endcaseendelsebegin //倒数计时if(num1>0)if(num1[3:0]==0)beginnum1[3:0]<=4'b1001;num1[7:4]<=num1[7:4]-1;endelse num1[3:0]<=num1[3:0]-1;if(num1==1) tim1<=0;endendelsebeginlight1<=3'b010;num1=2'b00;tim1<=0;endendalways @(posedge CLK )beginif(!URGEN)beginlight4<=light2;endif(RST) //南北方向复位控制beginlight2<=3'b100;//亮红灯num2<=red2+5;//时间为45Sendelse if(URGEN)//南北方向特殊情况控制beginlight2<=3'b100;//亮红灯//计数暂停pb2<=1;endelse if(pb2)beginlight2<=light4;pb2<=0;endelse if(EN)beginif(!tim2)begin //南北方向交通灯控制tim2<=1;case(state2)2'b00:beginnum2<=red2+5;light2<=3'b100;state2<=2'b01;end2'b01:beginnum2<=green2;light2<=3'b001;state2<=2'b10;end2'b10:beginnum2<=yellow2-1;light2<=3'b010;state2<=2'b00;enddefault:light2<=3'b100;endcaseendelsebegin //倒数计时if(num2>0)if(num2[3:0]==0)beginnum2[3:0]<=4'b1001;num2[7:4]<=num2[7:4]-1;endelse num2[3:0]<=num2[3:0]-1;if(num2==1) tim2<=0;endendelsebegintim2<=0;state2<=2'b00;light2<=3'b010;endendendmodule六、实验结果及分析初始状态时,东西方向绿灯,计时40秒,南北方向红灯,计时45秒。
1 / 1文档可自由编辑 Verilog HDL实验报告 学院:应用科学学院 班级:电科13-2班 姓名: 学号: 1 / 1文档可自由编辑
实验一 组合逻辑电路设计(1) 实验目的 (1) 熟悉FPGA设计流程; (2) 熟悉DE2开发板的基本元件使用(开关、发光二极管); (3) 学习基本组合逻辑元件的Verilog HDL设计以及实现(数据选择器); (4) 掌握连续赋值语句使用;
实验内容
本实验的目的是学习如何连接一个简单的外部输入、输出器件到FPGA芯片以及如何在FPGA器件上实现逻辑电路控制简单外部器件。考虑使用DE2开发板上拨动开关SW17-0(toggle Switch)作为电路的输入。使用发光二极管(Light Emitt-ing Diodes,LEDs)和7段显示数码管(7-segment Display)作为电路的输出。
第1部分连续赋值语句 步骤 1、新建Quartus II工程,选择Cyclone II EP2C35F672C6作为目标芯片,该芯片是DE2开发板上的FPGA芯片; 2、编写Verilog HDL代码加入到Quaruts II工程; 1 / 1文档可自由编辑
3、引脚分配,并编译工程该工程; 4、将编译好的电路下载到FPGA器件。扳动拨动开关观察相应的发光二极管显示,验证电路功能是否正确;
代码 module part1( input wire [2:0]SW, output wire LEDR ); wire r_g,s_g,qa,qb; and u1(r_g, SW[0], SW[1]); and u2(s_g, SW[1], SW[2]); nor u3(qa, r_g, qb); nor u4(qb, qa, s_g); assign LEDR = qa; endmodule
第2部分简单的数据选择器 步骤 1 .新建Quartus II工程; 2.在工程中加入8位宽的2选1数据选择器Verilog HDL代码。使用DE2开发板上的SW17作为输入s,开关SW7-0作为输入X,SW15-8作为输 1 / 1文档可自由编辑
入Y。连接拨动开关SW到红色的发光二极管LEDR,同时连接输出M到绿色的发光二极管LEDG7-0。 3.引脚分配,确保作为电路的输入端口的Cyclone II FPGA的引脚正确连接到拨动开关SW,作为电路输出的PPGA引脚正确与LEDR和LEDG连接; 4.编译; 5.将编译好的电路下载到FPGA器件。通过扳动拨动开关SW改变电路输入,同时观察LEDR和LEDG的显示是否与之匹配,测试8位宽的2选1数据选择器的功能是否正确。
代码 设计文件 module part2( input [17:0]SW, output [17:0]LEDR, output [7:0]LEDG ); assign LEDR=SW; mux_8bit_2to1 NQ(SW[17],SW[15:8],SW[7:0],LEDG); endmodule
module mux_2to1( input s, 1 / 1文档可自由编辑
input x,y, output m ); assign m=(s&y)|(~s&x); endmodule
module mux_8bit_2to1( input S, input [7:0]X,Y, output [7:0]M ); mux_2to1 m7(S,X[7],Y[7],M[7]); mux_2to1 m6(S,X[6],Y[6],M[6]); mux_2to1 m5(S,X[5],Y[5],M[5]); mux_2to1 m4(S,X[4],Y[4],M[4]); mux_2to1 m3(S,X[3],Y[3],M[3]); mux_2to1 m2(S,X[2],Y[2],M[2]); mux_2to1 m1(S,X[1],Y[1],M[1]); mux_2to1 m0(S,X[0],Y[0],M[0]); endmodule 测试台文件 `timescale 1ns/100ps 1 / 1文档可自由编辑
module mux2to1_test; reg x,y; reg s; wire m; mux2to1 M(s,x,y,m); initial begin x=1;y=0; s=0; #10 s=0; #10 s=1; #10 $stop; end endmodule 波形 1 / 1文档可自由编辑
实验二 组合逻辑电路设计(2) 数码和显示 实验目的 (1)采用always块设计组合逻辑电路; (2)熟悉二进制-十进制译码器和BCD码加法器等组合逻辑电路。
实验内容 (1) 组合逻辑7段显示译码器 (2)二进制-BCD转换电路 (3) 组合逻辑4位全加器 (4)BCD码加法电路
第1部分 组合逻辑7段显示译码器步骤 步骤 1、1、新建Quartus II工程,在DE2开发板实现该电路。本试验的目的是用手动方式设计7段显示译码电路。要求只能使用连续赋值语句,将输出定义为关于输入的逻辑表达式。 2、编写电路的Verilog HDL源文件,并将其包含到Quartus工程。将FPGA引脚连接到相应的拨动开关和7段显示数码管。(参考User Manual for the DE2 board)。引脚分配过程也可以参考Quartus II Introduction using Verilog Design,该文件可以在Altera公司网站大学计划网站的DE2 System CD上找到。 1 / 1文档可自由编辑
3、编译,并且将编译好的电路下载到FPGA中; 4、扳动拨动开关改变电路输入,观察数码管显示并分析电路功能是否正确;
代码 module part1( input [17:0]SW, output [17:0]LEDR, output [6:0]HEX0,HEX1,HEX2,HEX3
); assign LEDR=SW; decoder4_7 decoder4_7_01(SW[0+:4],HEX0); decoder4_7 decoder4_7_02(SW[4+:4],HEX1); decoder4_7 decoder4_7_03(SW[8+:4],HEX2); decoder4_7 decoder4_7_04(SW[12+:4],HEX3); endmodule
module decoder4_7( input [3:0]a, output [6:0]HEX );
assign HEX[6]=~a[3]&~a[2]&~a[1]|a[2]&a[1]&a[0]; 1 / 1文档可自由编辑
assign HEX[5]=~a[3]&~a[2]&a[0]|~a[2]&a[1]|a[1]&a[0]; assign HEX[4]=a[0]|a[2]&~a[1]; assign HEX[3]=~a[3]&~a[2]&~a[1]&a[0]| a[2]&~a[1]&~a[0]| a[2]&a[1]&a[0]; assign HEX[2]=~a[2]&a[1]&~a[0]; assign HEX[1]=a[2]&~a[1]&a[0]|a[2]&a[1]&~a[0]; assign HEX[0]=a[2]&~a[1]&~a[0]|~a[3]&~a[2]&~a[1]&a[0];
endmodule 第2部分 二进制-BCD转换电路 步骤 1、新建QuartusII工程; 2、编译,功能仿真;验证比较器、数据选择器和电路A的功能是否正确; 3、编写电路B和7段显示译码电路的Verilog HDL代码。使用DE2开发板上开关SW3-0代表输入V,使用HEX1和HEX0显示数字d1和d0。确保引脚分配正确;
4、编译,下载编译好电路到FPGA芯片中; 5、拨动拨动开关SW3-0改变收入值V,观察输出显示以测试电路的正确性; 1 / 1文档可自由编辑
代码 //niqi 1307010213 //top levelw module part2( input [3:0]SW, output [3:0]LEDR, output [6:0]HEX0,HEX1 ); wire [2:0]a; wire z; wire [3:0]m; wire [6:0]b,HEX;
assign LEDR=SW; compartor compartor_1(SW,z); circuit_A A(SW[2:0],a); mux_4bit_2to1 M(z,SW,{1'b0,a},m); circuit_B B(z,HEX1); decoder4_7 dec(m,HEX0); endmodule //7-segment decoder module decoder4_7(