《嵌入式设计技术的工程方法典型电路设2计举例.ppt》由会员分享,可在线阅读,更多相关《嵌入式设计技术的工程方法典型电路设2计举例.ppt(23页珍藏版)》请在优知文库上搜索。
1、键盘扫描编码电路键盘扫描编码电路28矩阵键盘矩阵键盘扫描编码扫描编码编码输出编码输出编码有效编码有效clkresetdIn7:0六位七段数码管动态显示电路的设六位七段数码管动态显示电路的设计计位选译码位选译码动动 态态 显显 示示 电电 路路7位段码输出位段码输出8421码码8421码码8421码码模模6计数输出计数输出显示控制时钟显示控制时钟5 4 3 2 1 0频率计的设计频率计的设计1.总体设计框图总体设计框图分分频频电电路路1KHz控制控制信号信号发生发生器器1Hz计计数数器器clren寄寄存存器器load七段七段数码数码管动管动态显态显示示被测信号被测信号位选位选信号信号段码段码输出
2、输出2.各模块的设计各模块的设计分频电路分频电路输入输入1KHz,1000分频,产生分频,产生1Hz(秒脉冲)。(秒脉冲)。占空比为占空比为50%的秒脉冲:的秒脉冲:占空比为占空比为999的秒脉冲:的秒脉冲:秒脉冲信号的产生方式,影响控制信号发生器的设计。秒脉冲信号的产生方式,影响控制信号发生器的设计。module f_1000(clk,out_1);input clk;output out_1;reg out_1;reg 10:1 counter;always(posedge clk)begin if (counter=999)counter=0;else counter=counter+1
3、;if (counter499)out_1=1;else out_1=0;endendmodule可修改调可修改调整占空比整占空比控制信号发生器控制信号发生器 根据根据1Hz秒信号,产生频率计数器的使能信号秒信号,产生频率计数器的使能信号en、清零信号、清零信号clr和寄存器的锁存信号和寄存器的锁存信号load。当秒脉冲(当秒脉冲(out_1)直接用作直接用作en取反取反再取反再取反上升沿用作上升沿用作load低有效清零低有效清零clrout_1enloadclr问题?问题?当秒脉冲(当秒脉冲(out_1)采用两秒测量一次策略:采用两秒测量一次策略:准备准备测量测量out_1enloadclr
4、准备准备测量测量上升沿锁存上升沿锁存低有效清零低有效清零高有效使能高有效使能module ckongzhi(out_1,en,load,clr);input out_1;output en,load,clr;reg en;always (posedge out_1)en=en;assign load=en;assign clr=(load&(out_1);endmodule控制信号发生器的描述控制信号发生器的描述频率测量计数器频率测量计数器方案一:若干方案一:若干8421码计数器,级联码计数器,级联计计数数器器计计数数器器计计数数器器被测信号被测信号enclr8421码码8421码码8421码
5、码优点:多位扩展优点:多位扩展缺点:串行级联,毛刺缺点:串行级联,毛刺到寄存器输入端到寄存器输入端方案二:计数器方案二:计数器+代码转换代码转换大大模模数数计计数数器器代代码码转转换换8421码码8421码码8421码码被测信号被测信号enclr到寄存器输入端到寄存器输入端module f_counter(in_clk,clr,en,Q);input in_clk,en,clr;output 16:1 Q;reg 14:1 counter;/09999Hz reg 4:1 qian,bai,shi,ge;/千、百、十、个位千、百、十、个位 always(posedge in_clk or ne
6、gedge clr)if (!clr)counter=0;else if (en)if(counter=9999)counter=0;else counter=counter+1;always(counter)begin qian=counter/1000;bai=(counter-qian*1000)/100;shi=(counter-qian*1000-bai*100)/10;ge=(counter-qian*1000-bai*100-shi*10)%10;Q4:1=ge;Q8:5=shi;Q12:9=bai;Q16:13=qian;endendmodule可根据测量范围,修改。可根据测量
7、范围,修改。寄存器模块寄存器模块锁存测量结果(锁存测量结果(8421码),提供给动态显示模块。码),提供给动态显示模块。module dff_16(load,Qin,Qout);input load;input 16:1 Qin;output 16:1 Qout;always (posedge load)Qout=Qin;endmodule七段数码管动态显示七段数码管动态显示直接采用前面已介绍的模块。直接采用前面已介绍的模块。3.顶层设计顶层设计可用模块级建模方法,建可用模块级建模方法,建Verilog HDL顶层模块;顶层模块;也可将每个模块生成一个也可将每个模块生成一个“逻辑符号逻辑符号”
8、,利用图形输,利用图形输入平台,调入各入平台,调入各“逻辑符号逻辑符号”,进行模块之间的连接。,进行模块之间的连接。同学可自行完成!同学可自行完成!8位八通道位八通道ADC0809 模模/数转换控制模块的设计数转换控制模块的设计ADC0809in0vccin7vccclk_750k通道地址通道地址地址锁存地址锁存启动转换启动转换数据使能数据使能转换结束转换结束数据数据转换控制模块转换控制模块addrout2:0alestarteocoed7:0clkrstenaddrin2:0lockdout7:0ADC0809转换时序转换时序通道地址通道地址addralestarteocoedZZZZZZZ
9、Z转换结果转换结果转换结束转换结束enlockdout状态机状态机S0S1S2S3S4S5S6S7module ADC0809(rst,clk,en,d,eoc,ale,start,oe,addrin,addrout,dout,lock);input rst,clk;/复位,状态机时钟复位,状态机时钟 input 7:0 d;/0809转换数据输入转换数据输入 input 2:0 addrin;/通道选择输入通道选择输入 input eoc,en;/0809转换结束信号输入转换结束信号输入,本模块使能信号本模块使能信号 output 2:0 addrout;/0809通道选择控制输出通道选择控
10、制输出 output 7:0 dout;/转换结果寄存输出转换结果寄存输出 output start,ale,oe;/0809启动转换启动转换,通道地址锁存通道地址锁存,转换结果输出使能转换结果输出使能 output lock;/上升沿锁存数据上升沿锁存数据 reg 2:0 addrout;reg 7:0 dout;reg start,ale,oe,lock;reg 2:0 now,next;/内部状态机变量内部状态机变量 parameter s0=3b000,s1=3b001,s2=3b011,s3=3b010,s4=3b110,s5=3b111,s6=3b101,s7=3b100;/状态分
11、配状态分配 always (posedge clk)/状态转换(时序部分)状态转换(时序部分)if (rst=1|en=0)now=s0;else now=next;always (now or en or eoc)/转态转换和输出(组合部分)转态转换和输出(组合部分)if(en=1)case(now)s0:begin ale=0;start=0;oe=0;lock=0;addrout=addrin;next=s1;end s1:begin ale=1;start=0;oe=0;lock=0;addrout=addrin;next=s2;end s2:begin ale=0;start=1;o
12、e=0;lock=0;addrout=addrin;next=s3;end s3:begin ale=0;start=0;oe=0;lock=0;addrout=addrin;if(eoc=1)next=s3;else next=s4;end s4:begin ale=0;start=0;oe=0;lock=0;if(eoc=0)next=s4;else next=s5;end s5:begin next=s6;ale=0;start=0;oe=1;lock=0;end s6:begin next=s7;ale=0;start=0;oe=1;lock=1;end s7:begin next=s0;ale=0;start=0;oe=0;lock=0;end default:begin next=s0;ale=0;start=0;oe=0;lock=0;end endcase else begin next=s0;ale=0;start=0;oe=0;lock=0;end always(posedge lock)dout=d;/0809转换结果锁存转换结果锁存endmodule进行仿真进行仿真本模块将在第三章本模块将在第三章SOPC设计中使用,请认真复习总结。设计中使用,请认真复习总结。封装生成逻辑符号封装生成逻辑符号注意信号的含义与作用!注意信号的含义与作用!