简单时序实现方案及电路仿真
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 尝试用计数器和case语句配合的方式写一个花样流
水灯。(8盏灯,先从左到右亮两轮,再从右到左 亮三轮,最后奇数位灯闪烁,偶数位灯常亮三轮) • 任选仿真方式,对昨天做的60进制计数器进行仿真。
• 了解状态机基本概念
• 了解状态机的应用场合
完
谢谢大家
1.多路选通器
• 输出数据根据需要在不同信号源之间变换,比如说
波形发生器的三种不同波形的选择。 case(sel) 2’b00:data_out<=data_in1; 2’b01:data_out<=data_in2; 2’b10:data_out<=data_in3; defualt:data_out<=data_in1; endcase
时间刻度 变量声明(reg型方便赋值) 时钟变化方式设定
复位变化方式设定
停止时间设定 例化被测模块
endmodule
工程名
路径 建议在FPGA工程 文件夹下单独建立 一个仿真文件夹
添加原文件和testbench文件。 如果顶层模块有调用其他模 块,那么其他模块的.v文件 也要添加
运行testbench
添加stp文件,编译、下载
下载可使用普通的下载方式,也可使用signaltap 右上角的下载功能窗口
单次运行
自动重复运行
1.case语句的基本使用方式
2.使用case语句实现简单的顺序流程 3.Testbench编写及Modelsim仿真
4.使用signaltap监视运行情况
基本题:
casex与casez使用方法与case相同。
在casez中,高阻态z被忽略,即2’b0z与
2’b01 、 2’b00均判断为相等。
在casex中,不定态x与高阻态z均被忽略,
即2’b0x与2’b01 、 2’b00均判断为相 等。
Modelsim仿真,是由人为设定输入信号的
变化规律,同时观察电路内部信号变化,以 及输出信号变化。
• • • • • •
2.与计数器配合实现串行流程。
• always @ (posedge clk or negedge rst_n) • if(!rst_n)cnt<=8’b0; • else cnt<=cnt+1; • • • • • • • • • • •
always @ (posedge clk or negedge rst_n) if (!rst_n)data_out<=8’b0; else begin case cnt 8’d0:data_out<=data[127:120]; 8’d1:data_out<=data[119:112]; 8’d2:data_out<=data[111:104]; ............................ defualt:data_out<=8’b0; endcase end
Testbench是用来给出仿真环境的文件,其
本身是一个使用Verilong语言编写的代码, 但其中可使用initial、#30、$display等无 法综合的语句。
`timescale 1ns/1ns module module1_t(); reg clk; reg rst_n; initial begin clk<=1'b0; forever #10 clk<=~clk; end initial begin rst_n<=1’b0; #500 rst_n<=1’b1; end initial begin #100000 $stop; end module1 u1(.clk(clk),.rst_n(rst_n));
当前模块内可 观察内容
模块结构
SignalTap II 和仿真不一样,它 是在你的FPGA工 程上,附加了一段 监视程序,可以监 视运行中的数据, 存储这些数据并送 回电脑以供开发者 观察。
添加需要监视的结点
添加数据记录时钟: 按这个时钟对监视点的数据进 行采集
样本深度:一次采集 过程,采集的数据量
——第三课:简单时序实现方案及 电路仿真 茹田力
case语句的基本功能与C语言中switch-case语句
相同。 常ቤተ መጻሕፍቲ ባይዱ形式:
• • •
• case(data_in)
•
• •
8’h00:data_out<=8’hF0; 8’h01:data_out<=8’hF2; .................. 8’hFF:data_out<=8’hF4; defualt:data_out<=8’hF8; endcase