多功能手持数字示波表WordWord文档格式.docx

上传人:b****1 文档编号:14386969 上传时间:2022-10-22 格式:DOCX 页数:26 大小:62.19KB
下载 相关 举报
多功能手持数字示波表WordWord文档格式.docx_第1页
第1页 / 共26页
多功能手持数字示波表WordWord文档格式.docx_第2页
第2页 / 共26页
多功能手持数字示波表WordWord文档格式.docx_第3页
第3页 / 共26页
多功能手持数字示波表WordWord文档格式.docx_第4页
第4页 / 共26页
多功能手持数字示波表WordWord文档格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

多功能手持数字示波表WordWord文档格式.docx

《多功能手持数字示波表WordWord文档格式.docx》由会员分享,可在线阅读,更多相关《多功能手持数字示波表WordWord文档格式.docx(26页珍藏版)》请在冰豆网上搜索。

多功能手持数字示波表WordWord文档格式.docx

0]spoint;

//指示小数点的位置

0]flag_MK;

//频率单位:

M标志K标志

wireFx_cph;

reg[7:

0]cp_ch;

regFend;

//测频结束标志

regFsst;

//控制本地标频开始计数的标志0:

开始计数

reg[39:

0]Ns;

//对本地标频的计数

reg[23:

0]LFCH;

//低频检测计数器,对底频率和直流做出警报和指示

reg[15:

0]Nx,Nx1;

//对待测频率的计数,Nx1检测低频被测信号的暂存器

regs0,s1,s2,s3,s4,s5,s6,s7,s8,sx1000;

always@(posedgeclkornegedgeret)

if(!

ret)

begin

sx1000<

=1'

b0;

s0<

s1<

s2<

s3<

s4<

s5<

s6<

s7<

s8<

end

else

=(Nx>

=1000);

=(Ns==40'

d100_0);

d100_00);

d100_000);

d100_000_0);

d100_000_00);

d100_000_000);

d100_000_000_0);

d100_000_000_00);

=(Ns>

=40'

d100_000_000_000);

Fend<

flag_MK<

=2'

b00;

spoint<

Fout<

=16'

h0000;

if(Fend)Fend<

if(Fx_clr)Fend<

b1;

if(sx1000)

case({s0,s1,s2,s3,s4,s5,s6,s7,s8})//--F-sp-MK

9'

b10_0000_000:

{Fout,Fend,spoint,flag_MK}<

={Nx,5'

b1_01_10};

b01_0000_000:

b1_10_10};

b00_1000_000:

b1_11_10};

b00_0100_000:

b1_01_01};

b00_0010_000:

b1_10_01};

b00_0001_000:

b1_11_01};

b00_0000_100:

b1_01_00};

b00_0000_010:

b1_10_00};

b00_0000_001:

b1_11_00};

endcase

always@(posedgeclkorposedgeFend)

if(Fend)

LFCH<

=24'

h000000;

LF<

=LFCH+1'

if(LFCH==24'

d100_000_00)beginLF<

=(Nx1==Nx);

d0)Nx1<

=Nx;

ret)Fsst<

elseif(Fx_cph)Fsst<

=!

Fend;

//边沿对齐

if(Fend)Ns<

h0000000000;

elseif(Fsst)Ns<

=Ns+1'

assignFx_cph=(cp_ch==8'

b11110000);

if(Fend)cp_ch<

elsecp_ch<

={cp_ch[7:

0],Fxin};

always@(posedgeclkorposedgeFend)

if(Fend)Nx<

elseif(Fx_cph)Nx<

=Nx+1'

endmodule

6.3.2LCD控制器(VerilogHDL程序)

主要用于转换控制液晶的协议,加快CPU的写入和控制,可以做到两时钟并行周期访问。

内部有的PWM模块用于控制液晶的显示亮度,CPU只需要向相应的寄存器写入亮度控制数就能控制液晶的亮度。

moduleTFT_LCD_IP(

//ClcokInput时钟和复位

inputcsi_clk,

inputcsi_reset_n,

//Avalon-MMSlave总线的连接

inputavs_chipselect,

input[8:

0]avs_address,//[RS],[A2],[A1],[A0]

//3-----2----1----0位

inputavs_write,

input[31:

0]avs_writedata,

inputavs_read,

output[31:

0]avs_readdata,

//ip_TFT液晶的接口

output[15:

0]coe_lcd_data,

outputcoe_lcd_cs,

outputcoe_lcd_rs,

outputcoe_lcd_wr,

outputregcoe_lcd_pwm,

outputregcoe_lcd_res,

inputcoe_touch_int,

inputcoe_touch_dout,

outputregcoe_touch_din,

outputregcoe_touch_busy,

outputregcoe_touch_dclk,

outputregcoe_touch_cs

);

regdiv_se;

reg[19:

0]div_buf;

//PWM的前置分频寄存器

reg[2:

0]count;

//脉频计数器

0]pwm_buf;

//占空比(0~7)

reg[31:

0]read_data;

//总线从外界读取的数据寄存器

wirecheck;

//中间检测信号

wireall_cs;

assignall_cs=(avs_address[7:

0]==8'

h00);

//writetoip_TFTformNiosIIcpu

assigncheck=avs_write&

all_cs;

assigncoe_lcd_wr=check?

1'

b1:

1'

assigncoe_lcd_cs=(avs_chipselect&

all_cs)?

b0:

assigncoe_lcd_rs=avs_address[8];

assigncoe_lcd_data=(avs_chipselect&

avs_writedata[15:

0]:

16'

hzzzz;

//使用一个时钟读取时,触摸板能读出正常数据,但是出现闪屏

assignavs_readdata=read_data;

always@(negedgecsi_clkornegedgecsi_reset_n)

begin

if(!

csi_reset_n)

pwm_buf<

=3'

b111;

coe_lcd_res<

coe_touch_din<

coe_touch_busy<

coe_touch_dclk<

coe_touch_cs<

elseif(avs_chipselect&

(!

all_cs))

begin

case(avs_address[7:

0])

8'

b0000_0001:

pwm_buf<

=avs_writedata[2:

0];

b0000_0010:

coe_lcd_res<

=avs_writedata[0];

b0000_0100:

coe_touch_din<

=avs_writedata[0];

b0000_1000:

coe_touch_busy<

b0001_0000:

coe_touch_dclk<

b0010_0000:

coe_touch_cs<

b0100_0000:

read_data[0]<

=coe_touch_int;

b1000_0000:

=coe_touch_dout;

end

 

always@(posedgecsi_clkornegedgecsi_reset_n)

csi_reset_n)

begindiv_buf<

=20'

h00000;

div_se<

else

if(div_buf==20'

d100000)

h00

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机硬件及网络

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1