简单卷积器的设计报告

上传人:d**** 文档编号:173348471 上传时间:2022-12-10 格式:DOCX 页数:16 大小:108.01KB
收藏 版权申诉 举报 下载
简单卷积器的设计报告_第1页
第1页 / 共16页
简单卷积器的设计报告_第2页
第2页 / 共16页
简单卷积器的设计报告_第3页
第3页 / 共16页
资源描述:

《简单卷积器的设计报告》由会员分享,可在线阅读,更多相关《简单卷积器的设计报告(16页珍藏版)》请在装配图网上搜索。

1、简单卷积器的设计一、课程设计目的(1)学习和掌握高速计算逻辑状态机的控制基本方法;(2)了解计算逻辑与存储器与AD模块的接口设计技术基础;(3)进一步掌握逻辑总线在模块设计中的应用和控制;(4)熟悉用工程概念来编写较完整的测试模块,做到接近真实的完 整测试。二、课程设计介绍简单卷积器的设计是一个有实际接口器件背景的小型设计。希望 通过这个设计,建立起专用数字计算系统的基本概念。卷积器是数字 信号处理系统中常用的部件,它首先对模拟输入信号实时采样,得到 数字信号序列。然后对数字信号进行卷积运算,再将卷积结果存入 RAM 中。三、课程设计思路及流程1、正如第二部分对本次课设的介绍,我们要做到的是对

2、模拟信 号的采样由A/D转换器来完成,而卷枳过程由卷积器来实现。为了设 计卷积器,首先要设计RAM和A/D转换器的VerilogHDL模型。在电 子工业发达的国家,可以通过商业渠道得到非常准确的外围器件的虚 拟模型。如果没有外围器件的虚拟模型,就需要仔细地阅读和分析 RAM和A/D转换器的器件说明书,来自行编写。因为RAM和A/D转 换器不是我们设计的硬件对象,所以需要的只是它们的行为模型,精 确的行为模型需要认真细致地编写,并不比可综合模块容易编写。它 们与实际器件的吻合程度自接影响设计的成功。在这里我们把重点放 在卷积器的设计上,RAM和A/D转换器的VerilogHDL模型和它们的 器件

3、参数见附录,同学们可以对照器件手册,认真阅读RAM和A/D转 换器的VerilogHDL模型。对RAM和A/D转换器的VerilogHDL模型的 详细了解对卷积器的设计是十分必要的。到目前为止,我们对设计模块要完成的功能比较明确了。总结如 下:首先它要控制AD变换器进行AD变换.,从AD变换器得到变换 后的数字序列,然后对数字序列进行卷积,最后将结果存入RAMo 2、卷积器的设计用高层次的设计方法来设计复杂的时序逻辑,重点是把时序逻辑 抽象为有限状态机,并用可综合风格的VerilogHDL把状态机描述出来。 下面是整个程序的设计过程。选择8位输入总线,输出到RAM的数 据总线也选择8位。卷积值

4、的高、低字节被分别写到两个RAM中。 地址总线为11位。为了理解卷积器设计中的状态机。必须对A/D转 换器和RAM的行为模块有深入的理解。四、主要程序代码1、主程序timescale 100ps/100psmodule coni (address,indatautdatanconvstibusy,enoutl enout2,CLK,reset,start),mput CLK, 采用1OMHZ的时钟reset, 复位信号start, 因为RAM的空间是有限的,当RAM存满后果样和卷积都会停止。此时给一个start的高电平脉冲将会开始下一次的卷积。nbusy, 从A/D转换器来的信号表示转换器的忙

5、或闲output wr,/RAM写控制信号enoutl,enout2, /enoutl是存储卷枳低字节结果RAM的片选信玷/enoutZ是存储卷枳高字节结果RAM的片选信号 nconvst, 给A/D转换器的控制信号,命令转换器开始工作,低电平有效address, 地址输出uiput 7 0 indata, 从A/D转换器来的数据总线output7:0 outdata, 写到RAM去的数据总线wire nbusy,reg wr,reg nconvst, enoutl, enoutZ,reg7:0 outdata,reg10:0 address,reg8:0 state;reg15:0 resu

6、lt,reg23:0 line,regll:0 counter,reghigh;reg4:0 j,regEOC, parametei hl=l,h2=2,h3=3; 假设的系统系数parametei IDLE=9lb 000000001, START=9lb 000000010, NCONVST=9*b000000100, READ=9*b 000001000, CALCU 000010000, WRREADY=9b000100000, WR=9b001000000, WREND=9b010000000, WITF0R=9,b 100000000,parameter FMAX=20, 因为AZ

7、D转换的时间是随机的,为保证按一定的频率采样,AZD 转换控制信号应以一定频率给出。这里采样频率通过FMAX控制 / 为 500KHZoalways (posedge CLK)if(! reset)beginstate=ZDLE,nconvst=rbl,enoutl =1,enout2counterlZbO,high=0,wr=l,1016=241?0, address=HbO,endelsecase(state)IDLE:if(stait=l)begincounter=0, /countei是一个计数器,记录己 用的RAM空间lnie=24b0, state=START, end elses

8、tate=IDLE, /START状态控制AZD开始转换 START if(EOC)beginnconvst=0, higli=0, state=NCONVST, endelsestate=START, /ZlSrCONVST状态是AZD转换保持阶段NCONVST: begin nconvst=l, state=READ, end/READ状态读取A/D转换结果,计算卷枳结果READ: begniif(EOC)beginline=( hne 15:0 ,indata ),state=CALCU,endelsestate=READ, endCALCU beginresult=line7:0*hl

9、+line 15 8*h2+line23:16*h3; stateend将卷积结果写入RAM时,先写入低字节,再写入高字节 /WRREADY状态是写RAM准备状态,建立地址和数据信号 WRREADY:begina ddress=counter, if(!high) outdata=iesult7:0, else outdataesult 15:8, state=WR, end/WR状态产生片选和写脉冲 WR beginif(! high) enoutl =0, else enout2=0, vzr=0, state=WREND, end/WREND状态结束一次写操作,若还未写入高字节则转到WR

10、READY态开始高字节写入WREND beginvzr=l, enoutl =1; enout2=l; if(!high)begin high=l, state=VZRREADY, endelse state if(! counter 11 )state=START,else begin state $display($time,BThe ram is used$stop,endendelsestateenddefault: state endcase/ assign rd=l, /RAM的读信号始终保持为高j记录时钟,与AX共同控制采样频率/由于直接用CLK的上升沿对nbusy判断以/决定某

11、些操作是否运行时,会因为两个信号/的跳变沿相隔太近而令状态机不能正常工作。因此 利用CLK的下降沿建立EOC信号与nbusy同步,相位 /相差180度,然后用CLK的上升沿判断操作是否进行。always (negedge CLK ) beginEOC = nbusy,if(!reset|state=START)J.enoutl(enoutl),.enout2(enout2),. CLK(CLK),.reset(reset),. stait(stait),siamramlov/(.Address(address)rData(outdata),.SRW(v/r).SRG(rd),.SRE(enou

12、tl), adc adc( nconvst(nconvst),.nbusy(nbusy),. data(indata),endmodule卜面是一个波形图,通过该波形图可看清整个程序的时序。con/CLK J 11】con/start-l_l_L_I_J 5_I IIIII-_rn_rn_0011002joiO1020CM()/nconvsl_rline 000000Q1foooiMi/nbusy_rAddress OOOtow/SREow/SRW五、心得与收获Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种 硬件描述语言,HDL语言本身是专门面向硬件与系统设计的,使用它

13、可使我同时获得设计实际电路的经验。本次的基于Veilog的简单卷积 器的设计,使我初步掌握了使用Veilog设计程序的基本步骤流程,熟 悉使用了 HDL语言,并且完成了本次课设的目的与要求。为以后的工 作与学习打好了基础。设计过程中难免会出现不懂不会的情况,但是通过查阅资料,与 同学相互讨论,逐一克服了困难。通过这次的课程设计,发现了自身 存在的不足之处,如思维不严谨,使用仿真软件不熟练等等,以后一 定会通过经常性的针对性的练习加以克服!附录一 A/D转换器的VerilogHDL模型机所需要的技术参数所用的A/D转换器为AD7886,其功能图如下图所示:VIN1VI M24-5REFSUMVR

14、EFAGND00CS RD CON VSTOGNDAD7886的时序控制有两种方法:第1种是CS和RD输入信 号控制AD7886三态输出,如上图所示,但A/D转换中三态输 出封锁,这种方法适合微处理器在AD7886转换结束后直接把数 据读出;第二种是&和而接到低电平,启动A/D转换开始后, 数据线输出封锁,直到转换结束,数据输出才有效,如下图所 示,这种方法可以用A/D转换结束BUSY的上升沿触发外部锁 存器锁存数据。在上述两种时序中,AD7886进行转换都是由NCONVST控制的。 NCONVST的下降沿使 采保开始跟踪信号.直到NCONVST上升沿来了. ADC才进行转换。NCONVST低

15、脉宽度决定了跟踪保持的建立时间。 在A/D转换过程中,BUSY输出位低,转换结束,BUSY变为高,表示 可以取走转换结果。本设计采用第二种时序控制AD7886工作。.保持开始/A/D转换器的Verilog HDL行为模型如下:timescale lOOps/lOOpsmodule adc (nconvst, nbusy, data),input nconvst,/AZD启动脉冲ST,即上图中output nbusy, /A/D工作标志,即上图中output data,/数据总线,从AD DATA文件中读取数据后经端【I输出reg7:0 databuf,i, / 内部寄存器 reg nbusy,

16、 wire7:0 data,reg7:0reg integeidata_mem0:255, link_bus,tconv,t5,t8,t9,tl2;integeiwidethl, widethZ, wideth,时间参数定义(依据AD7886手册):always (negedge nconvst)begintconv =9500+($random%500, /(type 950ns, max 1000ns ) Conversion Timet5 =$random%1000, /(max 100ns) CONVST to BUSY Propagation Dlay /CL=10pft8 = 20

17、0,/(min 20ns) CL=20pf Data Setup Time Prior to BUSY/(min 10ns) CL=100pft9= 100+($random%900,/(min 10ns, max 100ns) Bus Relinquish Time After CONVSTtl2 = 2500,/(type) BUSY High to CONVST Low, SH A Acquisition Timeend initialbegin$readmemh(Badc.data1 ,data_mem), /从数据文件 adc.data 中读取数据 1 = 0, nbusy = 1,

18、link_bus = 0, endassign data = link_bus? databuf Szz, 三态,愈线/*在信号nconvst的负跳降沿到来后,隔t5秒nbusy信号置为低,tconv是AD将模拟信号转 换为数字信号的时间,在信号nconvst的正跳降沿到来后经过tconv时间后,输出nbusy信 号变为高。*/ always (negedge nconvst) fork#t5 nbusy =0;(posedge nconvst)begin#tconv nbusy=l, endjoinnconvst信号的下降沿触发,经过t9延时后,把数据总线输出关闭置为高阻态,如图示。 nco

19、nvst信号的上升沿到来后,经过(tconv -18)时间,输出一个字节(8位数据)到databuf, 该数据来自于data_mem而data_mem中的数据是初始化时从数据文件AD.DATA中读取的。 此时应启动总线的三态输出。*/always (negedge nconvst)begin(posedge nconvst)begin#(tconv t8) databuf=data_memi, endif(wideth 500)beginif(i=255) 1=0, else i=i+l,endelse i = i,end在模数转换期间关闭三态输出,转换结束时启动三态输出always (neg

20、edge nconvst)fork#t9 link_bus = l*b0; 关闭三态输出,不允许总线输出(posedge nconvst)begin#(tconv-t8)link_bus=l b 1,endjoin/*当nconvst输入信号的下一个转换的下降沿与nbusy信号上升沿之间时间延迟小于tl2时, 将会出现警告信息,通知设计者请求转换的输入信号频率太快,A/D器件转换速度跟不上。 仿真模型不仅能够实现硬件电路的输出功能,同时能够对输入信号进行检测, 当输入信号不符合手册要求时,显示警告信息。*/检查A/D启动信号的频率是否太快always (posedge nbusy)begin#

21、tl2,if (Inconvst)begni$disp lay( Warning! SHA Acquisition Tune is too shoiti11), end/ else $display( SHA Acquisition Time is enough!) end/检查A/D启动信号的负脉冲宽度是否足够和太宽always (negedge nconvst)beginwidetli=$tune,(posedge nconvst) wideth=$timewideth,if (wideth 10000)beginSdisplayCnCONVST Pulse Width = %dwidet

22、h),$display(H Warning! nCONVST Pulse Width is too narrow or too widei), /$stop,endend endmodule附录二.2K*8位 异步CMOS静态RAM HM-65162模型:/*:sram.v* File NameFunction:2K*8bit Asynchronous CMOS Static RAM*/*:sram* Module Name* Description* Reference:2K*8bit Asynchronous CMOS Static RAM:HM-65162 reference book*

23、/* sram is a Verilog HDL model for HM-65162,2K*8bit Asynchronous CMOS Static * RAM. It is used in simulation to substitute the real RAM to verify whether* the writing or reading of the RAM is OK. This module is a behavioral model * for simulation only, not synthesizable. Its writing and reading func

24、tion *are verified.* */sram.vmodule sram(Address, Data, SRG, SRE, SRW);input 10:0 Address;inputSRG, / Output enableSRE, / Chip enableSRW; / Write enableinout 7:0 Data; / Buswire10:0Addr = Address;reg7:0RdData;reg7:0SramMem 0:h7ff;regRdSramDly, RdFlip;wire7:0FlpData, Data;regWR flag; /To judge the si

25、gnals according to the specification of HM-65162integerwireRdSram = SRG & SRE;wireWrSram = SRW & “SRE;reg10:0DelayAddr;reg7:0DelayData;regWrSramDly;integer file;assign FlpData = (RdFlip) ? RdData : RdData;assign Data = (RdSramDly) ? FlpData: hz;*parameters of read circle*/parameter TAVQV=90, TELQV=9

26、0, TELQX=5Z TGLQV=65, TGLQX=5, TEHQZ=50, TGHQZ=40,/3/4/5/6/7/8参数序号、最大或最小、参数含义(max)Address access time(max)Chip enable access time(min)Chip enable output enable time(max)Output enable access time(min)Output inable output enable time(max)Chip enable output disable time(max) Output enable output disabl

27、e timeTAVQX=5;9(min)Output hold from address change/* * parameters of write circle* */parameter TAVWL=10,12(min) Address setup time,TWLWH=55Z/13(min)Chip enable pulse setup time./write enable pluse width,TWHAX=15,/14(minlO)Write enable read setup time,读上升沿后地址保留时间TWLQZ=50z16(max)Write enable output d

28、isable timeTDVWH=30,/17(min)Data setup timeTWHDX=20,18(minl5)Data hold timeTWHQX=20,/19(minO)Write enable output enable time,0TWLEH=55,/20(min)Write enable pulse setup timeTDVEH=30,21(min)Chip enable data setup timeTAVWH=70;22(min65)Address valid to end of writeinitialbeginfile=$fopen(,ramlow.txt);i

29、f(!file)begin$display(nCould not open thefile.11);$stop;endend initialbeginfor(i=0 ; ih7ff; i=i+l)SramMemi = i;/ $monitor($time,/,DelayAddr=%h,DelayData=%h,/DelayAddr,DelayData);endinitialRdSramDly = 0;initialWR_flag=l;/*rEad circle*/always (posedge RdSram) #TGLQX RdSramDly = RdSram;always (posedge

30、SRW) #TWHQX RdSramDly = RdSram;always (Addr)begin#TAVQX;RdFlip = l;#(TGLQV -TAVQX);/address access timeif (RdSram) RdFlip = 0;endalways (posedge RdSram)beginRdFlip = 1;#TAVQV; / Output enable access timeif (RdSram) RdFlip = 0;endalways (Addr)#TAVQX RdFlip = 1;always (posedge SRG) #TEHQZ RdSramDly =

31、RdSram;always (posedge SRE) #TGHQZ RdSramDly = RdSram;always (negedge SRW) #TWLQZRdSramDly = 0;always (negedge WrSramDly or posedge RdSramDly) RdData = SramMemAddr;* Write CIRCLE*always (Addr)#TAVWL DelayAddr = Addr; /Address setupalways (Data)#TDVWH DelayData = Data; /Data setupalways (WrSram) #5 W

32、rSramDly =WrSram;always (Addr or Data or WrSram) WR_flag=l;always (negedge SRW)begin#TWLWH; /Write enable pulse widthif (SRW)beginWR_flag=0;$display(”ERROR! Cant write!Write enable time (W) is too short!);endendalways (negedge SRW)begin#TWLEH; /Write enable pulse setup timeif (SRE)beginWR_flag=0;$di

33、splay(”ERROR! Cant write! Write enablepulse setup time (E) is too short!1); endendalways (posedge SRW)begin#TWHAX; /Write enable read setup timeif(DelayAddr != Addr)beginWRjlag=0;$display(HERROR! Cant write!Write enable read setup time is too short!”); endendalways (Data)if (WrSram)begin#TDVEH;/Chip

34、 enable data setup timeif (SRE)beginWR_flag=0;$display(”ERROR! Cant write!Chip enable Data setup time is too short!1);endendalways (Data)if (WrSram) begin#TDVEH;if (SRW)beginWR_flag=O;$display(ERROR! Cant write!Chip enable Data setup time is too short!1); end endalways (posedge SRW) begin#TWHDX;/Dat

35、a hold timeif(DelayData != Data)$display(nWarning! Data hold time is too short!11); endalways (DelayAddr or DelayData or WrSramDly)if (WrSram &WR_flag)beginif(!Addr5) begin#15 SramMemAddr=Data;/ $display(,mem%h=%h,/Addr/Data);$fwrite(file,mem%h=%h n,Addr;Data);if(AddrO&Addrl) $fwrite(file,”n”); end else begin$fclose(file);$display(HPlease check the txt.”); $stop; end endendmodule

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!