如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第9讲秒表电路设计知识回顾本讲知识点一、设计任务二、设计原理三、实现过程1.分频器模块【例3-14】分频器设计modulefenpin(CLK_50M,CLK_1Hz,CLK_1KHz);inputCLK_50M;//输入时钟信号50MHzoutputCLK_1Hz;//分频输出信号1HzoutputCLK_1KHz;regclk1,clk1k;//中间变量clk1reg[24:0]counter1;reg[14:0]counter2;always@(posedgeCLK_50M)//输入时钟上升沿beginif(counter1==25000000)//如果计数器等于分频比一半begincounter1<=0;//分频计数器清0clk1<=~clk1;//clk1hz进行翻转endelsecounter1<=counter1+1;//计数器累加endalways@(posedgeCLK_50M)//输入时钟上升沿beginif(counter2==25000)//如果计数器等于分频比一半begincounter2<=0;//分频计数器清0clk1k<=~clk1k;//clk1khz进行翻转endelsecounter2<=counter2+1;//计数器累加endassignCLK_1Hz=clk1;//将中间结果向端口输出assignCLK_1KHz=clk1k;endmodule2.计数器模块【例3-15】秒表计数器设计modulecnt60(CLK,RST,EN,SEC_GE,SEC_SHI,COUT);inputCLK,RST,EN;//时钟、复位和暂停output[3:0]SEC_GE,SEC_SHI;//秒的个位、十位输出0~9outputCOUT;//分钟进位信号reg[5:0]counter;//定义计数器变量regCOUT;assignSEC_GE=counter%10;//计数器对10取余,提取个位assignSEC_SHI=counter/10;//对10取整,提取十位always@(posedgeCLKornegedgeRST)beginif(!RST)counter<=0;//RST=0时,异步清0elseif(EN)//EN=1,同步使能允许计数beginif(counter<59)counter<=counter+1;elsecounter<=0;//否则counter>=9时,清0endendalways@(counter)//组合电路之过程,构建进位信号beginif(counter==59)COUT<=1;//当counter=59时,输出进位标志为1elseCOUT<=0;//否则,输出进位标志为0endendmodule3.动态扫描显示模块【例3-16】秒表显示模块设计moduledisplay(CLK,SEC_GE,SEC_SHI,LED7_CS,LED7);inputCLK;//频率为1KHz的扫描信号input[3:0]SEC_GE,SEC_SHI;//输入的秒个位和十位output[7:0]LED7;//8位段码output[2:0]LED7_CS;//3位位选reg[2:0]LED7_CS;reg[7:0]LED7;reg[3:0]A;regaddress;always@(posedgeCLK)//构建2个数码管对应的2个状态位选状态变量beginaddress<=address+1;endalways@(address)//2选1多路选择器,确定数码管位置和与内容统一beginif(address)beginA<=SEC_SHI;LED7_CS<='B001;endelsebeginA<=SEC_GE;LED7_CS<='B000;endendalways@(A)//8段码译码模块begincase(A)0:LED7<=8'b00111111;1:LED7<=8'b00000110;2:LED7<=8'b01011011;3:LED7<=8'b01001111;4:LED7<=8'b01100110;5:LED7<=8'b01101101;6:LED7<=8'b01111101;7:LED7<=8'b00000111;8:LED7<=8'b01111111;9:LED7<=8'b01101111;default:LED7<=8'b00000000;endcaseendendmodule4.顶层设计(原理图)4.顶层设计(文本)display