1、0spoint; /指示小数点的位置0flag_MK; /频率单位:M 标志 K 标志 wire Fx_cph;reg 7:0cp_ch;reg Fend; /测频结束标志reg Fsst; /控制本地标频开始计数的标志 0:开始计数 reg 39:0Ns; /对本地标频的计数reg 23:0LFCH; /低频检测计数器,对底频率和直流做出警报和指示reg 15:0Nx,Nx1; /对待测频率的计数,Nx1检测低频被测信号的暂存器reg s0,s1,s2,s3,s4,s5,s6,s7,s8,sx1000;always(posedge clk or negedge ret)if(!ret) be
2、gin sx1000=1b0; s0 s1 s2 s3 s4 s5 s6 s7 s8=1000);=(Ns=40d100_0);d100_00);d100_000);d100_000_0);d100_000_00);d100_000_000);d100_000_000_0);d100_000_000_00);=(Ns=40d100_000_000_000); Fend flag_MK=2b00; spoint Fout=16h0000; if(Fend) Fend if(Fx_clr) Fendb1; if(sx1000) case(s0,s1,s2,s3,s4,s5,s6,s7,s8) /-
3、F-sp-MK 9b10_0000_000:Fout,Fend,spoint,flag_MK=Nx,5b1_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; endcasealways(posedge clk or posedge Fend)if(Fend) LFCH=24h0000
4、00; LF=LFCH+1 if(LFCH=24d100_000_00) begin LF=(Nx1=Nx);d0) Nx1=Nx;ret) Fsstelse if(Fx_cph) Fsst=!Fend; /边沿对齐if(Fend) Nsh0000000000;else if(Fsst) Ns=Ns+1assign Fx_cph=(cp_ch=8b11110000);if(Fend) cp_chelse cp_ch=cp_ch7:0,Fxin;always(posedge clk or posedge Fend) if(Fend) Nxelse if(Fx_cph) Nx=Nx+1endmod
5、ule6.3.2 LCD控制器(Verilog HDL程序) 主要用于转换控制液晶的协议,加快CPU的写入和控制,可以做到两时钟并行周期访问。内部有的PWM模块用于控制液晶的显示亮度,CPU只需要向相应的寄存器写入亮度控制数就能控制液晶的亮度。 module TFT_LCD_IP( / Clcok Input时钟和复位 input csi_clk, input csi_reset_n, / Avalon-MM Slave 总线的连接 input avs_chipselect, input 8:0 avs_address, /RS,A2,A1,A0 / 3-2-1-0 位 input avs_w
6、rite, input 31:0 avs_writedata, input avs_read, output 31:0 avs_readdata, / ip_TFT 液晶的接口 output 15:0coe_lcd_data, output coe_lcd_cs, output coe_lcd_rs, output coe_lcd_wr, output reg coe_lcd_pwm, output reg coe_lcd_res, input coe_touch_int, input coe_touch_dout, output reg coe_touch_din, output reg c
7、oe_touch_busy, output reg coe_touch_dclk, output reg coe_touch_cs);reg div_se;reg 19:0 div_buf; /PWM的前置分频寄存器reg 2:0 count; /脉频计数器0 pwm_buf; /占空比(07)reg 31:0 read_data;/总线从外界读取的数据寄存器wire check; /中间检测信号 wire all_cs;assign all_cs=(avs_address7:0=8h00);/ write to ip_TFT form NiosII cpuassign check=avs_w
8、rite & all_cs;assign coe_lcd_wr=check? 1b1:1assign coe_lcd_cs=(avs_chipselect & all_cs)?b0:assign coe_lcd_rs=avs_address8;assign coe_lcd_data=(avs_chipselect & avs_writedata15:0:16hzzzz;/使用一个时钟读取时,触摸板能读出正常数据,但是出现闪屏assign avs_readdata=read_data;always(negedge csi_clk or negedge csi_reset_n) begin if
9、(!csi_reset_n) pwm_buf=3b111; coe_lcd_res coe_touch_din coe_touch_busy coe_touch_dclk coe_touch_cs else if(avs_chipselect & (!all_cs) begin case (avs_address7:0) 8b0000_0001:pwm_buf=avs_writedata2:0;b0000_0010:coe_lcd_res=avs_writedata0;b0000_0100:coe_touch_din = avs_writedata0;b0000_1000:coe_touch_busy b0001_0000:coe_touch_dclk b0010_0000:coe_touch_cs b0100_0000: read_data0= coe_touch_int;b1000_0000:= coe_touch_dout;endalways(posedge csi_clk or negedge csi_reset_n)csi_reset_n) begin div_buf=20h00000; div_se else if(div_buf=20d100000) h00
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1