当前位置:文档之家› 全数字锁相环的verilog源代码讲解

全数字锁相环的verilog源代码讲解

全数字锁相环的verilog源代码讲解
全数字锁相环的verilog源代码讲解

支持论坛发展帖出全数字锁相环的verilog源代码,仿真已通过 module

dpll(reset,clk,signal_in,signal_out,syn; parameter para_K=4; parameter para_N=16; input reset; input clk; input signal_in; output signal_out; output syn; reg signal_out; reg dpout; reg delclk; reg addclk; reg add_del_clkout; reg [7:0]up_down_cnt; reg [2:0]cnt8; reg [8:0]cnt_N; reg syn; reg dpout_delay; reg [8:0]cnt_dpout_high; reg [8:0]cnt_dpout_low; /******phase detector*****/ always@(signal_in or signal_out begin

dpout<=signal_in^signal_out; end /******synchronization establish detector*****/ always@(posedge clk or negedge reset begin if(!reset dpout_delay<='b0; else

dpout_delay<=dpout; end always@(posedge clk or negedge reset begin if(!reset begin cnt_dpout_high<='b0; cnt_dpout_low<='b0; end else if(dpout if(dpout_delay==0

cnt_dpout_high<='b0; else if(cnt_dpout_high==8'b11111111 cnt_dpout_high<='b0; else cnt_dpout_high<=cnt_dpout_high+1; else if(!dpout if(dpout_delay==1

cnt_dpout_low<='b0; else if(cnt_dpout_low==8'b11111111 cnt_dpout_low<='b0; else cnt_dpout_low<=cnt_dpout_low+1; end always@(posedge clk or negedge reset begin

if(!reset syn<='b0; else if((dpout&&!dpout_delay||(!dpout&&dpout_delay

if(cnt_dpout_high[8:0]-cnt_dpout_low[8:0]<=4||cnt_dpout_low[8:0]-

cnt_dpout_high[8:0]<=4 syn<='b1; else syn<='b0; end /****up down couter with

mod=K****/ always@(posedge clk or negedge reset begin if(!reset begin delclk<='b0; addclk<='b0; up_down_cnt<='b00000000; end else begin if(!dpout begin delclk<='b0;

if(up_down_cnt==para_K-1 begin up_down_cnt<='b00000000; addclk<='b0; end else begin up_down_cnt<=up_down_cnt+1; addclk<='b0; end end else begin addclk<='b0;

if(up_down_cnt=='b0 begin up_down_cnt<=para_K-1; delclk<='b0; end else

if(up_down_cnt==1 begin delclk<='b1; up_down_cnt<=up_down_cnt-1; end else

up_down_cnt<=up_down_cnt-1; end end end /******add and delete clk*****/

always@(posedge clk or negedge reset begin if(!reset begin cnt8<='b000; end else begin if(cnt8=='b111 begin cnt8<='b000; end else if(addclk&&!syn begin cnt8<=cnt8+2; end else if(delclk&&!syn

cnt8<=cnt8; else cnt8<=cnt8+1; end end always@(cnt8 or reset begin if(!reset

add_del_clkout<='b0; else add_del_clkout<=cnt8[2]; end /******counter with

mod=N******/ always@(posedge add_del_clkout or negedge reset begin if(!reset begin cnt_N<='b0000; signal_out<='b0; end else begin if(cnt_N==para_N-1 begin

cnt_N<='b0000; signal_out<='b0; end else if(cnt_N==(para_N-1/2 begin signal_out<='b1; cnt_N<=cnt_N+1; end else cnt_N<=cnt_N+1; end end endmodule DPLL由鉴相器模K 加减计数器脉冲加减电路同步建立侦察电路模N分频器构成. 整个系统的中心频率(即signal_in和signal_out的码速率的2倍为clk/8/N. 模K加减计数器的K值决

定DPLL的精度和同步建立时间,K越大,则同步建立时间长,同步精度高.反之则短,低.

VerilogHDL经典程序非常适合新手

一、2线-4线译码器 module counter4(q1,q0,ncr,cp); input cp,ncr; output q1,q0; reg q1,q0; always@(posedge cp or negedge ncr) begin if(~ncr){q1,q0}<=2'b00; else{q1,q0}<={q1,q0}+1'b1; end endmodule 二、4选1数据选择器 module selector4_1(i0,i1,i2,i3,a1,a0,y); input i0,i1,i2,i3,a1,a0; output y; reg y; always@(a1or a0) begin case({a1,a0}) 2'b00:y=i0; 2'b01:y=i1; 2'b10:y=i2; 2'b11:y=i3; default:y=0; 一、2线-4线译码器 module counter4(q1,q0,ncr,cp); input cp,ncr; output q1,q0; reg q1,q0; always@(posedge cp or negedge ncr) begin if(~ncr){q1,q0}<=2'b00; else{q1,q0}<={q1,q0}+1'b1; end endmodule 二、4选1数据选择器 module selector4_1(i0,i1,i2,i3,a1,a0,y); input i0,i1,i2,i3,a1,a0; output y; reg y; always@(a1or a0) begin case({a1,a0}) 2'b00:y=i0;

锁相环设计

锁相环测量简述 一、锁相环路的基本工作原理 锁相环路是一个相位反馈自动控制系统。它由以下三个基本部件组成:鉴相器(PD)、环路滤波器(LPF)和压控振荡器(VCO)。其组成方框图如下所示。 锁相环路的基本方框图 锁相环可用来实现输出和输入两个信号之间的相位同步。当没有基准(参考)输入信号时,环路滤波器的输出为零(或为某一固定值)。这时,压控振荡器按其固有频率fv进行自由振荡。当有频率为fR的参考信号输入时,uR 和uv同时加到鉴相器进行鉴相。 如果fR和fv相差不大,鉴相器对uR和uv进行鉴相的结果,输出一个与uR和uv的相位差成正比的误差电压ud,再经过环路滤波器滤去ud中的高频成分,输出一个控制电压uc,uc将使压控振荡器的频率fv(和相位)发生变化,朝着参考输入信号的频率靠拢,最后使fv= fR,环路锁定。 环路一旦进入锁定状态后,压控振荡器的输出信号与环路的输入信号(参考信号)之间只有一个固定的稳态相位差,而没有频差存在。环路的锁定状态是对输入信号的频率和相位不变而言的,若环路输入的是频率和相位不断变化的信号,而且环路能使压控振荡器的频率和相位不断地跟踪输入信号的频率和相位变化,则这时环路所处的状态称为跟踪状态。锁相环路在锁定后,不仅能使输出信号频率与输入信号频率严格同步,而且还具有频率跟踪特性,所以它在电子技术的各个领域中都有着广泛的应用。 二、环路部件的测量 I.鉴相器特性的测量 鉴相器的主要性能可用鉴相特性曲线和鉴相灵敏度来表示。 鉴相特性曲线是表示鉴相器的输出电压Vd与两个输入比相信号之间相位差θe的关系曲线,其测量方法如右图所示,在测量精度要求不高的情况下,可用双踪示波器来代替相位计。

全数字锁相环毕业设计终稿

安徽大学 本科毕业论文(设计、创作) 题目:全数字锁相环的研究与设计 学生姓名:郑义强学号:P3******* 院(系):电子信息工程学院专业:微电子 入学时间:2011年9月 导师姓名:吴秀龙职称/学位:教授/博士 导师所在单位:安徽大学电子信息工程学院 完成时间:2015 年5月

全数字锁相环的研究与设计 摘要 锁相环路的设计和应用是当今反馈控制技术领域关注的热点,它的结构五花八门,但捕获时间短,抗干扰能力强一直是衡量锁相环性能好坏的一个标准。本文是在阅读了大量国内外关于全数字锁相环的技术文献的基础上,总结了锁相环的发展现状与技术水平,深入分析了全数字锁相环的基本结构与基本原理,利用VHDL语言,采用自上而下的设计方法,设计了一款全数字锁相环.本文主要描述了一种设计一阶全数字锁相环的方法,首先分析了课题研究的意义、锁相环的发展历程研究现状,然后描述了全数字锁相环的各个组成部件,并且详细分析了锁相环鉴相器、变模可逆计数器、加减脉冲电路、除H计数器和除N计数器各个模块的工作原理。接着我们使用了VHDL语句来完成了鉴相器、数字滤波器和数字振荡器的设计,并且分别使用仿真工具MAX+plus II逐个验证各个模块的功能。最后,将各个模块整合起来,建立了一个一阶全数字锁相环的电路,利用仿真工具MAX+plus II 验证了它的功能的能否实现,仿真结果与理论分析基本符合。 关键词:全数字锁相环;数字滤波器;数字振荡器;锁定时间

Design and research of ALL Digital Phase-Locked Loop Abstract The design and application of phase-locked loop is the focus of attention in the field of feedback control technology today, phase- locked loop has played a very important and unique role in variety of applications. such as the radar, measurement,communications, etc. All-digital phase-locked loop has its unique advantages. Its structure is varied, but short capture time, small synchronization error, excellent anti-interference ability is the standard measure of performance of a phase-locked loop. On the basis of reading a lot of DPLL technology literature of domestic and abroad, this article summed up the present situation and the development level of phase-locked loop technology, analysis the basic structure and principle of all-digital phase-locked loop in-depth, designed a quick all-digital phase-locked loop by using VHDL language and top-down design approach. In this brief, we presented a way of designing a first-order ALL Digital Phase-Locked Loop (ADPLL) first analyzes the significance of research, the development course of phase-locked loop current research status, and then describes the component parts of all digital phase-locked loop, and detailed analysis of the phase lock loop phase discriminator, reversible counter change mould, add and subtract pulse circuit, in addition to H counter and divide N working principle of each module. Then we use the VHDL statements to complete the phase discriminator, digital filter and the design of the digital oscillator, and using the simulation tool of MAX + plus II one by one to verify the function of each module. Finally, the various modules together, established a first-order digital phase-locked loop circuit, using the simulation tool of MAX + plus II verify the realization of its function, the simulation results and principle Keywords: All Digital Phase-Locked Loop; Digital filter; Digital oscillator, Locking time

专用集成电路,verilog移位乘法器,源代码及电路仿真

生命科学技术学院《CMOS专用集成电路》实验报告 学院(系):生命科学技术学院 专业:生物医学工程 班级:151011 学号:15101004 学生姓名:柳琳 2013年06 月29 日

一、实验题目 (1)更改测试文件相关部分的参数值,将该乘法器的数据位宽改为8-Bit。 (2)根据对实验电路的分析,绘制该移位式乘法器电路详细的电路结构框图,并对每一功能部件的功能及相关参数的意义进行说明; (3)采用Verilog HDL硬件描述语言设计一个16-Bit超前进位加法器; (4)在上面超前进位加法器基础上,将原电路的部分积求和电路改进成超前进位加法器。 二、实验结果与讨论 (1)更改测试文件相关部分的参数值,将该乘法器的数据位宽改为8-Bit。 module multiplier_nbit ( rst, clk, x, y, result ); parameter mwidth = 8; parameter rwidth = mwidth + mwidth; input rst, clk; … reg [1:0] stcnt; reg [2:0] mucnt; … assign mucnt_en = (stcnt == 2'b01) ? 1'b1 : 1'b0; assign mucnt_full = (mucnt == 3'b111) ? 1'b1 : 1'b0; assign stcnt_load = (stcnt == 2'b10) ? 1'b1 : 1'b0; … always @(posedge rst or posedge clk) begin if(rst) mucnt <= 3'b000; else if(mucnt_en) mucnt <= mucnt + 1; else mucnt <= mucnt; end module test_mult; reg rst, clk; reg [7:0] x, y; wire [15:0] result;

PLL(锁相环)电路原理及设计 [收藏]

PLL(锁相环)电路原理及设计[收藏] PLL(锁相环)电路原理及设计 在通信机等所使用的振荡电路,其所要求的频率范围要广,且频率的稳定度要高。无论多好的LC振荡电路,其频率的稳定度,都无法与晶体振荡电路比较。但是,晶体振荡器除了可以使用数字电路分频以外,其频率几乎无法改变。如果采用PLL(锁相环)(相位锁栓回路,PhaseLockedLoop)技术,除了可以得到较广的振荡频率范围以外,其频率的稳定度也很高。此一技术常使用于收音机,电视机的调谐电路上,以及CD唱盘上的电路。 一PLL(锁相环)电路的基本构成 PLL(锁相环)电路的概要 图1所示的为PLL(锁相环)电路的基本方块图。此所使用的基准信号为稳定度很高的晶体振荡电路信号。 此一电路的中心为相位此较器。相位比较器可以将基准信号与VCO (Voltage Controlled Oscillator……电压控制振荡器)的相位比较。如果此两个信号之间有相位差存在时,便会产生相位误差信号输出。 (将VCO的振荡频率与基准频率比较,利用反馈电路的控制,使两者的频率为一致。) 利用此一误差信号,可以控制VCO的振荡频率,使VCO的相位与基准信号的相位(也即是频率)成为一致。 PLL(锁相环)可以使高频率振荡器的频率与基准频率的整数倍的频率相一致。由于,基准振荡器大多为使用晶体振荡器,因此,高频率振荡器的频率稳定度可以与晶体振荡器相比美。 只要是基准频率的整数倍,便可以得到各种频率的输出。 从图1的PLL(锁相环)基本构成中,可以知道其是由VCO,相位比较器,基准频率振荡器,回路滤波器所构成。在此,假设基准振荡器的频率为fr,VCO的频率为fo。 在此一电路中,假设frgt;fo时,也即是VC0的振荡频率fo比fr低时。此时的相位比较器的输出PD 会如图2所示,产生正脉波信号,使VCO的振荡器频率提高。相反地,如果frlt;fo时,会产生负脉波信号。

全数字锁相环的设计

全数字锁相环的设计 锁相环()技术在众多领域得到了广泛的应用。如信号处理,调制解调,时钟同步,倍频,频率综合等都应用到了锁相环技术。传统的锁相环由模拟电路实现,而全数字锁相环()与传统的模拟电路实现的相比,具有精度高且不受温度和电压影响,环路带宽和中心频率编程可调,易于构建高阶锁相环等优点,并且应用在数字系统中时,不需及转换。随着通讯技术、集成电路技术的飞速发展和系统芯片()的深入研究,必然会在其中得到更为广泛的应用。 这里介绍一种采用硬件描述语言设计的方案。 结构及工作原理 一阶的基本结构如图所示。主要由鉴相器、变模可逆计数器、脉冲加减电路和除计数器四部分构成。变模计数器和脉冲加减电路的时钟分别为和。这里是环路中心频率,一般情况下和都是的整数幂。本设计中两个时钟使用相同的系统时钟信号。 图数字锁相环基本结构图 鉴相器 常用的鉴相器有两种类型:异或门()鉴相器和边沿控制鉴相器(),本设计中采用异或门()鉴相器。异或门鉴相器比较输入信号相位和输出信号相位之间的相位差ФФФ,并输出误差信号作为变模可逆计数器的计数方向信号。环路锁定时,为一占空比的方波,此时的绝对相为差为°。因此异或门鉴相器相位差极限为±°。异或门鉴相器工作波形如图所示。

图异或门鉴相器在环路锁定及极限相位差下的波形 变模可逆计数器 变模可逆计数器消除了鉴相器输出的相位差信号中的高频成分,保证环路的性能稳定。变模可逆计数器根据相差信号来进行加减运算。当为低电平时,计数器进行加运算,如果相加的结果达到预设的模值,则输出一个进位脉冲信号给脉冲加减电路;当为高电平时,计数器进行减运算,如果结果为零,则输出一个借位脉冲信号给脉冲加减电路。 脉冲加减电路 脉冲加减电路实现了对输入信号频率和相位的跟踪和调整,最终使输出信号锁定在输入信号的频率和信号上,工作波形如图所示。 图脉冲加减电路工作波形 除计数器

74LS138Verilog源码

`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 2020/02/28 13:40:03 // Design Name: // Module Name: _74ls138 // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module _74ls138(nE1,nE2,E3,B,nY); input nE1,nE2,E3; input [2:0]B; output[7:0]nY; reg[7:0]nY; always@(nE1,nE2,E3,B) if(!nE1 && !nE2 && E3) begin case(B) 3'b000: nY = 8'b1111_1110; 3'b001: nY = 8'b1111_1101; 3'b010: nY = 8'b1111_1011; 3'b011: nY = 8'b1111_0111; 3'b100: nY = 8'b1110_1111; 3'b101: nY = 8'b1101_1111; 3'b110: nY = 8'b1011_1111; 3'b111: nY = 8'b0111_1111; default:nY = 8'b1111_1111; endcase end

全数字锁相环的设计

全数字锁相环的设计 锁相环(PLL)技术在众多领域得到了广泛的应用。如信号处理,调制解调,时钟同步,倍频,频率综合等都应用到了锁相环技术。传统的锁相环由模拟电路实现,而全数字锁相环(DPLL)与传统的模拟电路实现的PLL相比,具有精度高且不受温度和电压影响,环路带宽和中心频率编程可调,易于构建高阶锁相环等优点,并且应用在数字系统中时,不需A/D及D/A转换。随着通讯技术、集成电路技术的飞速发展和系统芯片(SoC)的深入研究,DPLL必然会在其中得到更为广泛的应用。 这里介绍一种采用VERILOG硬件描述语言设计DPLL的方案。 DPLL结构及工作原理 一阶DPLL的基本结构如图1所示。主要由鉴相器、K变模可逆计数器、脉冲加减电路和除N计数器四部分构成。K变模计数器和脉冲加减电路的时钟分别为Mfc和2Nfc。这里fc是环路中心频率,一般情况下M和N都是2的整数幂。本设计中两个时钟使用相同的系统时钟信号。 图1 数字锁相环基本结构图 鉴相器 常用的鉴相器有两种类型:异或门(XOR)鉴相器和边沿控制鉴相器(ECPD),本设计中采用异或门(XOR)鉴相器。异或门鉴相器比较输入信号Fin相位和输出信号Fout相位之间的相位差Фe=Фin-Фout,并输出误差信号Se作为K变模可逆计数器的计数方向信号。环路锁定时,Se为一占空比50%的方波,此时的绝对相为差为90°。因此异或门鉴相器相位差极限为±90°。异或门鉴相器工作波形如图2所示。

图2 异或门鉴相器在环路锁定及极限相位差下的波形 K变模可逆计数器 K变模可逆计数器消除了鉴相器输出的相位差信号Se中的高频成分,保证环路的性能稳定。K变模可逆计数器根据相差信号Se来进行加减运算。当Se 为低电平时,计数器进行加运算,如果相加的结果达到预设的模值,则输出一个进位脉冲信号CARRY给脉冲加减电路;当Se为高电平时,计数器进行减运算,如果结果为零,则输出一个借位脉冲信号BORROW给脉冲加减电路。 脉冲加减电路 脉冲加减电路实现了对输入信号频率和相位的跟踪和调整,最终使输出信号锁定在输入信号的频率和信号上,工作波形如图3所示。 图3 脉冲加减电路工作波形 除N计数器

全数字锁相环的verilog源代码讲解

支持论坛发展帖出全数字锁相环的verilog源代码,仿真已通过 module dpll(reset,clk,signal_in,signal_out,syn; parameter para_K=4; parameter para_N=16; input reset; input clk; input signal_in; output signal_out; output syn; reg signal_out; reg dpout; reg delclk; reg addclk; reg add_del_clkout; reg [7:0]up_down_cnt; reg [2:0]cnt8; reg [8:0]cnt_N; reg syn; reg dpout_delay; reg [8:0]cnt_dpout_high; reg [8:0]cnt_dpout_low; /******phase detector*****/ always@(signal_in or signal_out begin dpout<=signal_in^signal_out; end /******synchronization establish detector*****/ always@(posedge clk or negedge reset begin if(!reset dpout_delay<='b0; else dpout_delay<=dpout; end always@(posedge clk or negedge reset begin if(!reset begin cnt_dpout_high<='b0; cnt_dpout_low<='b0; end else if(dpout if(dpout_delay==0 cnt_dpout_high<='b0; else if(cnt_dpout_high==8'b11111111 cnt_dpout_high<='b0; else cnt_dpout_high<=cnt_dpout_high+1; else if(!dpout if(dpout_delay==1 cnt_dpout_low<='b0; else if(cnt_dpout_low==8'b11111111 cnt_dpout_low<='b0; else cnt_dpout_low<=cnt_dpout_low+1; end always@(posedge clk or negedge reset begin if(!reset syn<='b0; else if((dpout&&!dpout_delay||(!dpout&&dpout_delay if(cnt_dpout_high[8:0]-cnt_dpout_low[8:0]<=4||cnt_dpout_low[8:0]- cnt_dpout_high[8:0]<=4 syn<='b1; else syn<='b0; end /****up down couter with mod=K****/ always@(posedge clk or negedge reset begin if(!reset begin delclk<='b0; addclk<='b0; up_down_cnt<='b00000000; end else begin if(!dpout begin delclk<='b0; if(up_down_cnt==para_K-1 begin up_down_cnt<='b00000000; addclk<='b0; end else begin up_down_cnt<=up_down_cnt+1; addclk<='b0; end end else begin addclk<='b0; if(up_down_cnt=='b0 begin up_down_cnt<=para_K-1; delclk<='b0; end else if(up_down_cnt==1 begin delclk<='b1; up_down_cnt<=up_down_cnt-1; end else up_down_cnt<=up_down_cnt-1; end end end /******add and delete clk*****/ always@(posedge clk or negedge reset begin if(!reset begin cnt8<='b000; end else begin if(cnt8=='b111 begin cnt8<='b000; end else if(addclk&&!syn begin cnt8<=cnt8+2; end else if(delclk&&!syn

全数字锁相环毕业设计终稿

大学 本科毕业论文(设计、创作) 题目:全数字锁相环的研究与设计 学生:义强学号:P3******* 院(系):电子信息工程学院专业:微电子 入学时间:2011 年9 月 导师:吴秀龙职称/学位:教授/博士 导师所在单位:大学电子信息工程学院 完成时间:2015 年 5 月

全数字锁相环的研究与设计 摘要 锁相环路的设计和应用是当今反馈控制技术领域关注的热点,它的结构五花八门,但捕获时间短,抗干扰能力强一直是衡量锁相环性能好坏的一个标准。本文是在阅读了大量国外关于全数字锁相环的技术文献的基础上,总结了锁相环的发展现状与技术水平,深入分析了全数字锁相环的基本结构与基本原理,利用VHDL语言,采用自上而下的设计方法,设计了一款全数字锁相环.本文主要描述了一种设计一阶全数字锁相环的方法,首先分析了课题研究的意义、锁相环的发展历程研究现状,然后描述了全数字锁相环的各个组成部件,并且详细分析了锁相环鉴相器、变模可逆计数器、加减脉冲电路、除H计数器和除N计数器各个模块的工作原理。接着我们使用了VHDL语句来完成了鉴相器、数字滤波器和数字振荡器的设计,并且分别使用仿真工具MAX+plus II逐个验证各个模块的功能。最后,将各个模块整合起来,建立了一个一阶全数字锁相环的电路,利用仿真工具MAX+plus II 验证了它的功能的能否实现,仿真结果与理论分析基本符合。 关键词:全数字锁相环;数字滤波器;数字振荡器;锁定时间

Design and research of ALL Digital Phase-Locked Loop Abstract The design and application of phase-locked loop is the focus of attention in the field of feedback control technology today, phase- locked loop has played a very important and unique role in variety of applications. such as the radar, measurement,communications, etc. All-digital phase-locked loop has its unique advantages. Its structure is varied, but short capture time, small synchronization error, excellent anti-interference ability is the standard measure of performance of a phase-locked loop. On the basis of reading a lot of DPLL technology literature of domestic and abroad, this article summed up the present situation and the development level of phase-locked loop technology, analysis the basic structure and principle of all-digital phase-locked loop in-depth, designed a quick all-digital phase-locked loop by using VHDL language and top-down design approach. In this brief, we presented a way of designing a first-order ALL Digital Phase-Locked Loop (ADPLL) first analyzes the significance of research, the development course of phase-locked loop current research status, and then describes the component parts of all digital phase-locked loop, and detailed analysis of the phase lock loop phase discriminator, reversible counter change mould, add and subtract pulse circuit, in addition to H counter and divide N working principle of each module. Then we use the VHDL statements to complete the phase discriminator, digital filter and the design of the digital oscillator, and using the simulation tool of MAX + plus II one by one to verify the function of each module. Finally, the various modules together, established a first-order digital phase-locked loop circuit, using the simulation tool of MAX + plus II verify the realization of its function, the simulation results and principle Keywords: All Digital Phase-Locked Loop; Digital filter; Digital oscillator, Locking time

verilog有限状态机实验报告(附源代码)

有限状态机实验报告 一、实验目的 ●进一步学习时序逻辑电路 ●了解有限状态机的工作原理 ●学会使用“三段式”有限状态机设计电路 ●掌握按键去抖动、信号取边沿等处理技巧 二、实验内容 用三段式有限状态机实现序列检测功能电路 a)按从高位到低位逐位串行输入一个序列,输入用拨动开关实现。 b)每当检测到序列“1101”(不重叠)时,LED指示灯亮,否则灭,例如 i.输入:1 1 0 1 1 0 1 1 0 1 ii.输出:0 0 0 1 0 0 0 0 0 1 c)用八段数码管显示最后输入的四个数,每输入一个数,数码管变化一次 d)按键按下的瞬间将拨动开关状态锁存 i.注意防抖动(按键按下瞬间可能会有多次的电平跳变) 三、实验结果 1.Rst_n为0时数码管显示0000,led灯不亮,rst_n拨为1,可以开始输入,将输 入的开关拨到1,按下按钮,数码管示数变为0001,之后一次类推分别输入1, 0,1,按下按钮后,数码管为1101,LED灯亮,再输入1,LED灯灭,之后再输 入0,1(即共输入1101101使1101重叠,第二次LED灯不亮),之后单独输入

1101,LED灯亮 2.仿真图像 刚启动时使用rst_n 一段时间后 其中Y代表输出,即控制led灯的信号,sel表示数码管的选择信号,seg表示数码管信号 四、实验分析 1、实验基本结构

其中状态机部分使用三段式结构: 2、整体结构为:

建立一下模块: Anti_dither.v 输入按键信号和时钟信号,输出去除抖动的按键信号生成的脉冲信号op 这一模块实现思路是利用按钮按下时会持续10ms以上而上下抖动时接触时间不超过10ms来给向下接触的时间计时,达到上限时间才产生输出。 Num.v 输入op和序列输入信号A,时钟信号clk和复位信号,复位信号将num置零,否则若收到脉冲信号则将num左移一位并将输入存进最后一位。输出的num即为即将在数码管上显示的值 Scan.v 输入时钟信号,对其降频以产生1ms一次的扫描信号。 Trigger.v 这一模块即为状态机模块,按三段式书写。 整个模块的输入为时钟信号,脉冲信号,序列输入变量,复位信号,输出LED灯控制信号Y。 第一段是状态转换模块,为时序逻辑电路,功能是描述次态寄存器迁移到现态寄存器。即如果收到复位信号将现态置零,否则将上次得到的next_state赋给current_state。

基于FPGA的数字锁相环的设计

目录 第一章绪论..................................... 错误!未定义书签。 1.1锁相环技术的发展及研究现状................................................ 错误!未定义书签。 1.2课题研究意义 ........................................................................... 错误!未定义书签。 1.3本课题的设计内容.................................................................... 错误!未定义书签。第二章 FPGA的设计基础............................ 错误!未定义书签。 2.1硬件设计语言-Verilog HDL.................................................. 错误!未定义书签。 2.2 FPGA的设计流程 ...................................................................... 错误!未定义书签。第三章锁相环的原理. (2) 3.1全数字锁相环基本结构 (3) 3.2全数字锁相环的工作原理 (4) 第四章数字锁相环的设计 (5) 4.1基于FPGA的数字锁相环总体设计方案 (5) 4.2数字鉴相器的设计 (6) 4.3 K变模可逆计数器的设计 (7) 4.4脉冲加减器的设计 (10) 4.5 N分频器的设计 (12) 第五章实验仿真与调试 (14) 5.1数字锁相环的仿真 (14) 5.2数字锁相环的系统实验 (15) 结束语 (19) 参考文献 (20) 附录 (21)

Verilog状态机的写法

Verilog状态机的写法-转 1 引言 Verilog HDL作为当今国际主流的HDL语言,在芯片的前端设计中有着广泛的应用。它的语法丰富,成功地应用于设计的各个阶段:建模、仿真、验证和综合等。可综合是指综合工具能将Verilog HDL代码转换成标准的门级结构网表,因此代码的描述必须符合一定的规则。大部分数字系统都可以分为控制单元和数据单元两个部分,控制单元的主体是一个状态机,它接收外部信号以及数据单元产生的状态信息,产生控制信号,因而状态机性能的好坏对系统性能有很大的影响。 有许多可综合状态机的Verilog代码描述风格,不同代码描述风格经综合后得到电路的物理实现在速度和面积上有很大差别。优秀的代码描述应当易于修改、易于编写和理解,有助于仿真和调试,并能生成高效的综合结果。 2 有限状态机 有限状态机(Finite State Machine,FSM)在数字系统设计中应用十分广泛。根据状态机的输出是否与输入有关,可将状态机分为两大类:摩尔(Moore)型状态机和米莉 (Mealy)型状态机。Moore型状态机的输出仅与现态有关;Mealy型状态机的输出不仅与现态有关,而且和输入也有关。图1是有限状态机的一般结构图,它主要包括三个部分,其中组合逻辑部分包括状态译码器和输出译码器,状态译码器确定状态机的下一个状态,输出译码器确定状态机的输出,状态寄存器属于时序逻辑部分,用来存储状态机的内部状态。 图1 状态机的结构框图 2.1 好的状态机标准 好的状态机的标准很多,最重要的几个方面如下: 第一,状态机要安全,是指FSM不会进入死循环,特别是不会进入非预知的状态,而且由于某些扰动进入非设计状态,也能很快的恢复到正常的状态循环中来。这里面有两层含义。其一要求该FSM的综合实现结果无毛刺等异常扰动,其

基于Matlab的数字锁相环的仿真设计

基于Matlab的数字锁相环的仿真设计 摘要:锁相环是一个能够跟踪输入信号相位变化的闭环自动跟踪系统。它广泛应用于无线电的各个领域,并且,现在已成为通信、雷达、导航、电子仪器等设备中不可缺少的一部分。然而由于锁相环设计的复杂性,用SPICE对锁相环进行仿真,数据量大,仿真时间长,而且需进行多次仿真以提取设计参数,设计周期长。本文借助于Matlab中Simulink仿真软件的灵活性、直观性,在Simulink 中利用仿真模块搭建了全数字锁相环的仿真模型。先借助模拟锁相环直观形象、易于理解的特点,通过锁相环在频率合成方面的应用,先对模拟锁相环进行了仿真,对锁相环的工作原理进行了形象的说明。在模拟锁相环的基础上,重新利用仿真模块搭建了全数字锁相环的仿真模型,通过仿真达到了设计的目的,验证了此全数字锁相环完全能达到模拟锁相环的各项功能要求。 关键词:锁相环,压控振荡器,锁定,Simulink,频率合成,仿真模块 1引言 1932年法国的H.de Bellescize提出同步捡波的理论,首次公开发表了对锁相环路的描述。到1947年,锁相环路第一次应用于电视接收机的水平和垂直扫描的同步。到70年代,随着集成电路技术的发展,逐渐出现集成的环路部件、通用单片集成锁相环路以及多种专用集成锁相环路,锁相环路逐渐变成了一个成本低、使用简便的多功能组件,为锁相技术在更广泛的领域应用提供了条件。锁相环独特的优良性能使其得到了广泛的应用,其被普遍应用于调制解调、频率合成、电视机彩色副载波提取、FM立体声解码等。随着数字技术的发展,相应出现了各种数字锁相环,它们在数字信号传输的载波同步、位同步、相干解调等方面发挥了重要的作用。而Matlab强大的数据处理和图形显示功能以及简单易学的语言形式使Matlab在工程领域得到了非常广泛的应用,特别是在系统建模与仿真方面,Matlab已成为应用最广泛的动态系统仿真软件。利用MATLAB建模可以快速地对锁相环进行仿真进而缩短开发时间。 1.1选题背景与意义 Matlab是英文MATrix LABoratory(矩阵实验室)的缩写。1980年,时任美国新墨西哥大学计算机系主任的Cleve Moler教授在给学生讲授线性代数课程时,为使学生从繁重的数值计算中解放出来,用FORTRAN语言为学生编写了方便使用Linpack和Eispack的接口程序并命名为MATLAB,这便是MATLAB的雏形。经过几年的校际流

VHDL+Verilog良好的代码编写风格

VHDL+Verilog良好的代码编写风格(二十五条) 田Sir 发表于: 2010-4-28 13:56 来源: 湖北师范学院电工电子实验教学示范中心良好代码编写风格可以满足信、达、雅的要求。在满足功能和性能目标的前提下,增强代码的可读性、可移植性,首要的工作是在项目开发之前为整个设计团队建立一个命名约定和缩略语清单,以文档的形式记录下来,并要求每位设计人员在代码编写过程中都要严格遵守。良好代码编写风格的通则概括如下:(1)对所有的信号名、变量名和端口名都用小写,这样做是为了和业界的习惯保持一致;对常量名和用户定义的类型用大写; (2)使用有意义的信号名、端口名、函数名和参数名; (3)信号名长度不要太长; (4)对于时钟信号使用clk 作为信号名,如果设计中存在多个时钟,使用clk 作为时钟信号的前缀;(5)对来自同一驱动源的信号在不同的子模块中采用相同的名字,这要求在芯片总体设计时就定义好顶层子模块间连线的名字,端口和连接端口的信号尽可能采用相同的名字; (6)对于低电平有效的信号,应该以一个下划线跟一个小写字母b 或n 表示。注意在同一个设计中要使用同一个小写字母表示低电平有效; (7)对于复位信号使用rst 作为信号名,如果复位信号是低电平有效,建议使用rst_n; (8)当描述多比特总线时,使用一致的定义顺序,对于verilog 建议采用bus_signal[x:0]的表示; (9)尽量遵循业界已经习惯的一些约定。如*_r 表示寄存器输出,*_a 表示异步信号,*_pn 表示多周期路径第n 个周期使用的信号,*_nxt 表示锁存前的信号,*_z 表示三态信号等; (10)在源文件、批处理文件的开始应该包含一个文件头、文件头一般包含的内容如下例所示:文件名,作者,模块的实现功能概述和关键特性描述,文件创建和修改的记录,包括修改时间,修改的内容等;(11)使用适当的注释来解释所有的always 进程、函数、端口定义、信号含义、变量含义或信号组、变量组的意义等。注释应该放在它所注释的代码附近,要求简明扼要,只要足够说明设计意图即可,避免过于复杂; (12)每一行语句独立成行。尽管VHDL 和Verilog 都允许一行可以写多个语句,当时每个语句独立成行可以增加可读性和可维护性。同时保持每行小于或等于72 个字符,这样做都是为了提高代码得可读性;(13)建议采用缩进提高续行和嵌套语句得可读性。缩进一般采用两个空格,如西安交通大学SOC 设计中心2 如果空格太多则在深层嵌套时限制行长。同时缩进避免使用TAB 键,这样可以避免不同机器TAB 键得设置不同限制代码得可移植能力; (14)在RTL 源码的设计中任何元素包括端口、信号、变量、函数、任务、模块等的命名都不能取Verilog 和VHDL 语言的关键字; (15)在进行模块的端口申明时,每行只申明一个端口,并建议采用以下顺序:输入信号的clk、rst、enables other control signals、data and address signals。然后再申明输出信号的clk、rst、enalbes other control signals、data signals; (16)在例化模块时,使用名字相关的显式映射而不要采用位置相关的映射,这样可以提高代码的可读性和方便debug 连线错误; (17)如果同一段代码需要重复多次,尽可能使用函数,如果有可能,可以将函数通用化,以使得它可以复用。注意,内部函数的定义一般要添加注释,这样可以提高代码的可读性; (18)尽可能使用循环语句和寄存器组来提高源代码的可读性,这样可以有效地减少代码行数; (19)对一些重要的always 语句块定义一个有意义的标号,这样有助于调试。注意标号名不要与信号名、变量名重复; (20)代码编写时的数据类型只使用IEEE 定义的标准类型,在VHDL 语言中,设计者可以定义新的类型和子类型,但是所有这些都必须基于IEEE 的标准; (21)在设计中不要直接使用数字,作为例外,可以使用0 和1。建议采用参数定义代替直接的数字。同

相关主题
文本预览
相关文档 最新文档