欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    电子系统仿真与实现结题报告.docx

    • 资源ID:61376980       资源大小:692.66KB        全文页数:11页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    电子系统仿真与实现结题报告.docx

    Harbin Institute of Technology电子系统方针与实现结题报告题 目:基于FPGA和SystemVue的模拟/数字混合系统设计与实现一 研究内容本设计使用了HDL和IP核设计技术实现了一个完整的ISE设计流程,在系统调试阶段,使用SystemVue对系统进行调试和验证。设计的主要研究内容为模拟转数字系统的实现,即通过运算放大器对交流信号进行放大,通过模/数转换器ADC,将模拟信号转换成数字信号,并在FPGA内经过运算处理后,得到所测量模拟信号的频率和幅度信息,并将这个信息显示在7段数码管上。二 基本原理及框图下图即为基于FPGA和SystemVue的模拟转数字系统的实现原理图。虚线内为FPGA内部完成的逻辑,使用Verilog语言编写。 FPGA主要实现的功能包括:(1) 分频器模块将外部提供的100MHz晶振时钟进行分频,为下列模块提供时钟驱动:1. 给串行ADC控制器提供驱动时钟;2. 给频率和幅度测量单元提供驱动时钟;3. 给7段数码管驱动显示逻辑提供驱动时钟。(2) 串行ADC控制器模块完成的功能包括:1. 为串行ADC提供驱动时钟和片选信号;2. 将ADC输出的串行数据转换成并行数据。(3) 频率和幅度测量单元模块主要完成的功能包括:1. 测量输入串行ADC的正弦模拟信号的频率值,并且将测量的频率值转换成BCD码;2. 测量输入串行ADC的正弦模拟信号的幅度值,并且将测量的幅度值转换成BCD码。(4) 2选1多路复用器,根据外部提供的选择信号,选择在7段数码管上显示幅度值或频率值。(5) 7段数码管驱动显示逻辑的功能包括:1. 提供7段数码管扫描电路2. 控制频率或幅度值正确的显示。从FPGA实现的功能可以看出,最重要的部分即串行ADC控制器模块,该模块功能是否正确执行关系到整个系统的可靠性,因此需要对该模块进行反复的测试与验证,从而达到设计要求。本设计采用SystemVue软件的HDL和Modelsim联合仿真功能对该设计进行仿真验证。具体的实现流程为:在元件库中选择硬件设计(Hardware Design),在硬件设计库中找到HDL Cosimulation模块并且将其添加到原理图中,双击该模块,将Verilog设计的所有子模块封装起来,这样会创建一个与设计的Verilog语言描述的功能完全一样的模块。连接好各模块并放置好信号源、接收器等后,点击Run Analyses,SystemVue会自动编译VHDL代码并调用Modelsim,所有在顶层实体的信号也将被添加到的ModelSim波形文件中,这样我们就可以观察仿真结果是否正确,从而验证程序的正确性。三 设计流程为保证串行ADC控制器模块设计功能的正确性,使用SystemVue中HDL联合Modelsim平台对该设计进行功能验证,在波形窗口上分析运行后的结果,对比采样得到的数据和转换后的并行数据是否符合设计要求。根据设计要求,FPGA内部逻辑采用状态机模式编写,下图为状态转换图:按照上图,完成Verilog程序的编写,程序代码如下:module ad ( CLK, RST, SDATA1, SDATA2, SCLK, nCS, DATA1, DATA2, START, DONE); input CLK; input RST; input SDATA1; input SDATA2; output SCLK; output nCS; output 11:0 DATA1; output 11:0 DATA2; input START; output DONE; / General usagewire SCLK; / User interface signalsreg nCS; reg 11:0 DATA1; reg 11:0 DATA2; reg DONE; / TYPE states:parameter states_Idle = 0;parameter states_ShiftIn = 1;parameter states_SyncData = 2;reg 1:0 current_state; reg 1:0 next_state; reg 15:0 temp1; reg 15:0 temp2; wire clk_div; reg 2:0 clk_counter; reg 3:0 shiftCounter; reg enShiftCounter; reg enParalelLoad; / -always (posedge RST or posedge CLK) begin : clock_divide if (RST = 1'b 1) begin clk_counter <= 3'b 000; end else begin clk_counter <= clk_counter + 1'b 1; end endassign clk_div = clk_counter2; assign SCLK = clk_counter2; / -always (posedge clk_div) begin : counter if (enShiftCounter = 1'b 1) begin temp1 <= temp114:0, SDATA1; temp2 <= temp214:0, SDATA2; shiftCounter <= shiftCounter + 1'b 1; end else if (enParalelLoad = 1'b 1 ) begin shiftCounter <= 4'b 0000; DATA1 <= temp111:0; DATA2 <= temp211:0; end end/ - always (posedge clk_div) begin : SYNC_PROC if (RST = 1'b 1) begin current_state <= states_Idle; end else begin current_state <= next_state; end endalways (current_state) begin : OUTPUT_DECODE if (current_state = states_Idle) begin enShiftCounter <= 1'b 0; DONE <= 1'b 1; nCS <= 1'b 1; enParalelLoad <= 1'b 0; end else if (current_state = states_ShiftIn ) begin enShiftCounter <= 1'b 1; DONE <= 1'b 0; nCS <= 1'b 0; enParalelLoad <= 1'b 0; / if current_state = SyncData then end else begin enShiftCounter <= 1'b 0; DONE <= 1'b 0; nCS <= 1'b 1; enParalelLoad <= 1'b 1; end endalways (current_state or START or shiftCounter) begin : NEXT_STATE_DECODE next_state <= current_state; / default is to stay in current state case (current_state) states_Idle: begin if (START = 1'b 1) begin next_state <= states_ShiftIn; end end states_ShiftIn: begin if (shiftCounter = 4'h F) begin next_state <= states_SyncData; end end states_SyncData: begin / if (START = 1'b 0) / begin next_state <= states_Idle; end end / default: begin next_state <= states_Idle; end endcase endendmodule / module AD1接下来进行SystemVue模拟,在元件库中选择硬件设计(Hardware Design),在硬件设计库中找到HDL Cosimulation模块并且将其添加到原理图中,双击该模块,如下图所示将写好的Verilog代码添加到模块中并添加引脚。值得注意的是,时钟信号clk可以不特意添加,使用SystemVue自带时钟会使设计更加简单,添加方法为在HDL Settings选项卡下的Optional Settings中添加clk时钟,其周期即为上方Iteration time中所添加的时间。设置完成后,点击OK选项,即生成了与所编译的Verilog语言功能完全一致的HDL模块,如下图所示:如下图所示为原理图的START输入信号部分,由一个方波信号发生器SquareGen组成;由于HDL模块的输入数据类型必须为fix,故添加一个数据类型转换器FloatToFxp,该转换器的功能是将方波信号发生器SquareGen发出的方波信号(数据类型为实信号real)转换为fix类型,可以作为HDL模块的输入:如下图所示为串行数据SDATA1和SDATA2的输入端,由一个随机数发生器RandomBits和一个数据类型转换器FloatToFxp组成;如下图所示为HDL模块清零使能RST信号的输入端,在本设计中默认为高电平。最后,在输出端口添加接收器Sink,完成整个电路的设计,如下图所示:四 仿真结果与分析进行串并转换后的仿真结果如下图所示:可以看出该模块将串行输入数据转化为12位的并行数据,之后可以再进行各种数据处理,如计算输入数据的幅度值和频率等,这些就较为简单且不再属于SystemVue的范畴,故略去。

    注意事项

    本文(电子系统仿真与实现结题报告.docx)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开