2020/1/181《计算机EDA设计》实验教程实验四电子秒表电路北航计算机学院艾明晶2020/1/182内容概要实验目的实验要求实验原理实验内容扩展内容实验报告2020/1/183了解掌握电子秒表电路的结构与原理。掌握创建顶层图形设计文件的方法。熟练掌握引脚锁定及编程下载的方法。实验目的2020/1/184设计一个电子秒表电路,使其具有异步清零和启动/停止计数功能,最大能计到59.99s,并用数码管显示其秒高位、秒低位,百分秒高位、百分秒低位。用发光二极管显示向分钟的进位信号。启动计数和停止计数使用同一个输入信号。当第一次按下启/停按钮时,启动计数;第二次按下启/停按钮时,则暂停计数;第三次按下启/停按钮时,在原来的数值基础上继续计数……。实验要求2020/1/185设计此电路的关键在于BCD码计数器的计数时钟,它应由启/停按钮来控制:当启动计数时,计数时钟输出T=0.01s的时钟信号;当停止计数时,计数时钟输出维持在高电平或低电平,同时产生计数时钟信号的计数器(即分频计数器)保持原计数值!实验原理2020/1/186本实验选择实验箱的模式7fclk=50MHz;FPGA适配板上的J6应接最下方两个插针,选择Clock0;按钮式开关键1(Pin233)、键4(pin237)(高脉冲持续时间为20ms)实现异步清零和启动/停止计数功能;4个(共阳级)7段码显示数码管数码5、数码4显示计数器秒高位和秒低位的值,用数码2、数码1显示百分秒高位和百分秒低位的值;用发光二极管D1(PIO40-Pin161)显示向分钟的进位。2020/1/187将电路划分为3个子模块,先进行子模块设计分频电路子模块clkdiv100.v•将输入时钟T=0.1ms分频为T=0.01s,即分频系数为100。•提示:所有赋值语句均采用非阻塞赋值,采用语句“clkout=(count[6:0]==99);”使clkout在计够100个数后才有一个正跳变。实验内容2020/1/188定时计数子模块bcdcnt.v•按0.01s的步长计时。•整个程序包括3个部分(采用非阻塞赋值语句):①异步清零clr信号为低有效,进位信号cn清零,4个计数器清零。②计数可以采用4个if语句的嵌套。③产生向分钟的进位信号cn2020/1/189显示子模块p7seg.v•将定时计数子模块bcdcnt.v的每个4位二进制计数器的输出信号译码为7段数码管的输入信号,以便驱动(共阳级)数码管。•提示:为便于进行引脚锁定,p7seg.v中七段码各字段的输出不用a~g表示,而用一组信号out[6..0]表示,分别对应a~g。2020/1/1810创建顶层图形设计文件(second.bdf)2020/1/1811对second.bdf编译、时序仿真注意仿真启动计数、暂停计数以及继续计数的功能。在计到59.99s后,计数器应回到0状态,并重新开始计数。另外还应仿真异步清零功能。2020/1/1812将原顶层图形设计文件另起名保存(如second_download.bdf),并在其时钟输入引脚后增加一个进行5000分频的时钟分频模块clkdiv5K.v。创建下载用顶层图形文件2020/1/1813编程下载利用GW48-SOPC+实现设计的编程下载。编程器件为EP1C12Q240C8。说明:选择实验箱的模式7进行工作。连接好电源和下载电缆、给实验箱通电后,按动实验箱右下角的“模式选择”按键,则“模式显示”数码管会显示选定的模式所对应的数字。然后再进行编程下载。在线校验根据电子秒表电路的实际工作过程,验证电路的各种功能,如启动计数、暂停计数和继续计数,以及异步清零功能,观察数码管5、4、2、1和发光二极管D1的显示情况。2020/1/1814扩展内容采用纯文本描述方式每个子模块和顶层电路都采用VerilogHDL语言描述实现,对子模块的调用采用模块元件例化的方法。便于利用仿真工具Modelsim对顶层设计文件进行仿真。•为避免在Modelsim中加载设计模块时找不到底层子模块,建议将所有被调用的子模块的源代码直接复制到顶层设计文件中!•对子模块的调用端口定义采用按位置对应的方法,注意一定严格按照子模块的端口定义一一对应,否则仿真不会正确。•为了仿真enable、clk_10KHz和clko这些中间信号,可以在程序中将它们声明为输出信号。2020/1/1815程序主要结构modulesecond_vlg(dsec,sec,secd,secm,clko,bin_dsec,bin_sec,bin_secd,bin_secm,cn,clk,startstop,clr);//输入、输出信号定义regclk_10KHz,clk_100Hz;//中间变量regenable;//中间变量,随startstop信号而变reg[13:0]count1;reg[6:0]count2;wirecnt_en;//计数允许信号,=clk_10KHz&enable//(1)此always模块实现时钟分频电路(50MHz-10KHz)always@(posedgeclkorposedgeclr)//(2)此always模块产生enable信号always@(posedgestartstoporposedgeclr)//(3)计数允许信号,作为10KHz-100Hz分频电路的输入时钟assigncnt_en=clk_10KHz&enable;//(4)此always模块实现时钟分频电路(10KHz-100Hz)//(5)调用bcdcnt子模块和p7seg子模块//定时计数子模块bcdcnt.v源代码//显示子模块p7seg.v源代码endmodule2020/1/1816testbench写法2020/1/1817顶层电路2020/1/1818实验目的实验要求实验内容设计思路:给出原理框图及每部分的说明,说明完成了哪些功能,对于本实验中的关键设计进行详细的说明。仿真波形及分析:给出主要模块和顶层文件的仿真波形的截图。然后对照波形,详细分析其工作过程。对遇到的问题及解决方法进行详细的说明。回答“五、问题与思考”中提出的问题。实验报告