实验四4 位计数器设计1. 实验目的学习quartusii 和modelsim 的使用方法;学习原理图和veriloghdl 混合输入设计方法;掌握4位计数器设计的设计及仿真方法。
2. 实验原理设计其中的计数器模块CNT4E和数码管译码驱动模块DECL7S勺verilogHDL代码,并作出整个系统仿真。
2.1 4位计数器模块代码module CNT4B(out, CLK, RST); //output out; //in put CLK, RST; //reg [3:0] out; //always (posedge CLK or n egedge RST) //beginif(!RST) //out <= 4'dO;elseout <= out + 1; //enden dmodule低电平复位每一个clk计数效果图:定义模块名和各个端口定义输出端口定义输入时钟和复位定义四位计数器上升沿时钟和下降沿复位2.2七段数码管代码module segled(out1,a); // input [3:0]a; //output [6:0]out1; //reg [6:0]out1; //reg always(a)// begin case(a) //case4'b0000:out1<=7'b0111111;4'b0001:out1<=7'b0000110;4'b0010:out1<=7'b1011011;4'b0011:out1<=7'b1001111;4'b0100:out1<=7'b1100110;4'b0101:out1<=7'b1101101;4'b0110:out1<=7'b1111101;4'b0111:out1<=7'b0000111;4'b1000:out1<=7'b1111111;4'b1001:out1<=7'b1101111;4'b1010:out1<=7'b1110111;4'b1011:out1<=7'b1111100;4'b1100:out1<=7'b0111001;4'b1101:out1<=7'b1011110;4'b1110:out1<=7'b1111001;4'b1111:out1<=7'b1110001;endcase end en dmodule // 模块结束效果图:定义模块名和输入输出端口输入一个3位矢量输出一个6位矢量型变量用于always语句语句用于选择输出CNT4B:b2v inst敏感信号a2.3 综合模块代码// Copyright (C) 1991-2013 Altera Corporation// Your use of Altera Corporation's design tools, logic functions// and other software and tools, and its AMPP partner logic// functions, and any output files from any of the foregoing// (including device programming or simulation files), and any// associated documentation or information are expressly subject // to the terms and conditions of the Altera Program License// Subscription Agreement, Altera MegaCore Function License// Agreement, or other applicable license agreement, including,// without limitation, that your use is for the sole purpose of// programming logic devices manufactured by Altera and sold by // Altera or its authorized distributors.Please refer to the// applicable agreement for further details.// PROGRAM "Quartus II 64-Bit"// VERSION "Version 13.1.0 Build 162 10/23/2013 SJ Web Edition"// CREATED "Tue Apr 11 22:35:09 2017"module cou(CLK,RST,); in put wire CLK; in put wireRST;output wire [6:0] Q;wire [3:0] SYNTHESIZED_WIRE_0; CNT4B b2v_i nst(.CLK(CLK),.RST(RST), .out(SYNTHESIZED_WIRE_0)); segled b2v_i nst1(•a(SYNTHESIZED_WIRE_0), .out1(Q)); en dmodule效果图:v -_E3. 实验设备kx3c10F+开发板,电脑。
4. 实验步骤 4.1编译4.1.1编译结果如下图所示:一一丿 y►■审包办暫或♦ x e «(■rnjK±1tnifrtEr * 盘囂 *GmpiiKii Aiixft • curiio ■»■*-♦ ■*jv*I^TlHLrO^snr^fkl- B>111 w SUIT・ Bhla"5 FlwS^inEp Q UAW □ M -lt ■smoLN *知.•卜 2 c,叮U13弟皿・甲3 *HW|eMTN4«nlTop-rwl Erttfiiame0 FtarDS r EwmwrOdniij □MMHvanEwcii > j 出 m何“itNHTh^Hi^sHnil> 13PWreftII f UM 1 < 1.〕rifcalM< 3s*] , 』ni-B^iiMi 11 Triii "ntfiv<1『H W 1 • jCNTT4B:b2v inst segled :b2v JnstlCLK QRsrl >DUtl[6..Q]a [王®编译解释:在这个报告中,我们可以看到如下信息:Total logic elements 11/5136(<1%): 该芯片中共有5136 个LE 资源,其中的11个在这个工程的这次编译中得到了使用。
Total comb in atio nal fun ctio ns 11/5136(<1%): 该芯片的5136 个LE资源中,其中11个用于实现组合逻辑。
Dedicated logic registers 4/5136(0%): 该芯片的5136个LE资源中,其中4个用于实现寄存器,即时序逻辑。
从上述信息中,可以得到组合逻辑与时序逻辑的使用比例一一11/4= 2.75:1 。
4.1.2综合出来的电路图4仙----- fCLH 皿3 Q I <15 舶----------- 百hiM•..... ■扪us廉电路图解释:从以上电路图可以看出本电路图主要由计数器(CNT4B 和七段数码管显示程序(segled )组成。
从CNT4B 的CLK 端输入CLK 信号,RST 为低电平复位信号,本实验是四位二进制计数 器可以计数16个,每个CLK 上升沿计数一次,其中七段数码管是通过输入的四位二进制数 来选择相应的断码进行输出显示。
4.2管脚分配管脚连接:通过双击Location 选择与芯片上相应的引脚进行连接。
4.3仿真1.测试模块的代码对输入信号定义reg 型变量 输出定义为wire 型 变量初始化< >E 亠IML . Q. *Top V lewWire Bond with Exposed PadCyctone IP EP3C5E144CB□ntCMrJKK.i.Fnp■ ffiLM *2; £3VIIMI HR fS3p J ■rp ■>FM WJ IU ■ra_-*Ui Vortal *X U遊 J u ■ **_<aLi V 14/M *; 札戟3 as *ush曲AJLIvr-N^vv: 0A 3!N_W■L3 Y “&1:module test; reg CLK, RST; // wire [6:0]Q; // in itial beg in //RST = 1'b0;::日wO吟阳U M - I ; .44*^%J U IU E亠4MM :MM14 AWiuii :>'3*^1 3■: it JkiKAiat眾rLir■Efl MMICLK = 1'bO;endalways #50 CLK=~CLK; // 产生时钟信号cou U1(.CLK(CLK),.RST(RST),.Q(Q)); // endmodule2.modesim 仿真图仿真图解释:通过仿真图我们可以看到程序一开始低电平复位,然后 rst 高电平。
计数器开始计数,每过一个clk 上升沿,七段数码管相应断码加 1,与理论值相同,所以仿真验证成功,可以进行硬件仿真4.4下载验证元件例化口 *'OQ !"- »1 11 * ? t '-r•||||l5 ■昂* JU* ** * iI ** Kru| >44 wnznjti ■:豎ill ■ IIfB DmiI .•明I5. 实验体会通过本次实验我学到了计数器的工作原理,计数器虽然也曾经在数电上学过,但是用Verilog 代码编写出来感觉还是很神奇的,而且用代码写出来的计数器简单易理解。
由此认识到这门课程进行数字设计非常有效率,所以在今后的学习中一定努力学习,勤学多问。
对于这次实验,由于比较简单,所以做的挺顺利的,基本没什么问题。