网站开发报价表的文档xampp做网站

张小明 2025/12/30 9:26:11
网站开发报价表的文档,xampp做网站,长沙岳麓区网站开发,电商是怎么做的FPGA逃不过的testbenchtestbench做这三件事#xff1a;产生模拟激励#xff08;波形#xff09;#xff1b; 将产生的激励加入到被测试模块中并观察其响应#xff1b; 将输出响应与期望值相比较#xff1b;一、先搞懂#xff1a;Testbench是什么#xff1f;Testbench产生模拟激励波形将产生的激励加入到被测试模块中并观察其响应将输出响应与期望值相比较一、先搞懂Testbench是什么Testbench测试平台是用于验证Verilog/VHDL设计代码DUTDesign Under Test的仿真代码本质是“给DUT输入激励捕获输出验证是否符合预期”。核心作用无需上板在仿真工具ModelSim/QuestaSim中验证逻辑是否正确比如状态机是否按预期切换、输出是否毛刺新手关键Testbench是纯仿真代码不会被综合成硬件可自由用initial、#延时、force/release等仿真语法。二、Testbench的通用结构固定模板所有Testbench都遵循这个框架直接套即可timescale 1ns/1ps // 仿真时间单位/精度ns是单位ps是精度 module tb_xxx; // 模块名一般加tb_前缀无输入输出 // 1. 定义仿真信号与DUT的端口一一对应 reg clk; // 时钟reg型因为要在initial/always中赋值 reg rst_n; // 复位 reg key_in; // 按键输入 wire key_out; // 消抖输出wire型由DUT驱动 // 2. 例化待测试模块DUT key_fsm u_key_fsm( // 例化名u_xxx规范 .clk (clk), .rst_n (rst_n), .key_in (key_in), .key_out (key_out) ); // 3. 生成时钟激励比如50MHz周期20ns initial begin clk 1b0; forever #10 clk ~clk; // 每10ns翻转一次周期20ns end // 4. 生成复位输入激励核心模拟真实场景 initial begin // 第一步初始化信号 rst_n 1b0; // 先复位 key_in 1b1; // 按键默认松开高电平 #200; // 等待200ns让复位稳定 // 第二步释放复位 rst_n 1b1; #1000; // 空闲状态等待1000ns // 第三步模拟按键按下带抖动 key_in 1b0; // 按下 #50000; // 抖动50us小于消抖1ms key_in 1b1; // 抖动 #30000; key_in 1b0; // 稳定按下 #1500000; // 按下1.5ms超过消抖1ms // 第四步模拟按键松开带抖动 key_in 1b1; // 松开 #40000; // 抖动40us key_in 1b0; // 抖动 #20000; key_in 1b1; // 稳定松开 #1500000; // 松开1.5ms // 第五步结束仿真 $stop; // 暂停仿真$finish是退出 end // 5. 可选打印状态/输出方便调试 initial begin $monitor(时间%0t, 当前状态%b, key_out%b, $time, u_key_fsm.current_state, key_out); end endmodule三、手把手写「按键消抖状态机」的Testbench结合上一篇的key_fsm模块完整Testbench代码注释如下// 第一步定义仿真时间尺度必须放在最前面 timescale 1ns/1ps // 1ns是时间单位1ps是仿真精度精度≤单位 // 第二步定义Testbench模块无输入输出 module tb_key_fsm; // 1. 声明信号与DUT端口一一对应reg驱动输入wire接收输出 reg clk; // 50MHz时钟周期20ns reg rst_n; // 低电平复位 reg key_in; // 按键输入模拟按下/松开/抖动 wire key_out; // 消抖后输出由DUT输出 // 2. 例化待测试的状态机模块DUT // 格式模块名 例化名(端口映射); key_fsm u_key_fsm( .clk (clk), // 时钟信号连接 .rst_n (rst_n), // 复位信号连接 .key_in (key_in), // 按键输入连接 .key_out (key_out) // 消抖输出连接 ); // 3. 生成时钟激励50MHz周期20ns // initial只执行一次的仿真语句仿真特有的 initial begin clk 1b0; // 初始时钟低电平 forever #10 clk ~clk; // 每10ns翻转一次周期20nsforever无限循环 end // 4. 生成复位按键输入激励模拟真实按键行为 initial begin // 阶段1复位初始化仿真开始先复位 rst_n 1b0; // 复位拉低 key_in 1b1; // 按键默认松开高电平 #200; // 等待200ns让复位稳定#是延时语法 // 阶段2释放复位进入空闲状态 rst_n 1b1; #1000; // 空闲1000ns观察状态是否为IDLE // 阶段3模拟按键按下带机械抖动 key_in 1b0; // 第一次检测到按下 #50000; // 抖动50us小于消抖1ms状态应停在KEY_DOWN key_in 1b1; // 抖动假松开 #30000; key_in 1b0; // 稳定按下 #1500000; // 按下1.5ms超过消抖1ms状态应到KEY_STABLEkey_out1 // 阶段4模拟按键松开带机械抖动 key_in 1b1; // 第一次检测到松开 #40000; // 抖动40us状态应停在KEY_UP key_in 1b0; // 抖动假按下 #20000; key_in 1b1; // 稳定松开 #1500000; // 松开1.5ms状态回到IDLEkey_out0 // 阶段5重复一次按键验证稳定性 key_in 1b0; #1500000; key_in 1b1; #1500000; // 阶段6结束仿真 $stop; // 暂停仿真ModelSim中可查看波形 // $finish; // 直接退出仿真新手用$stop方便看波形 end // 5. 调试辅助打印关键信息可选但新手推荐 // $monitor每次信号变化时打印$time是仿真时间 initial begin $display(仿真开始); $monitor(时间%0t | 当前状态%b | key_in%b | key_out%b, $time, u_key_fsm.current_state, key_in, key_out); end endmodule四、Testbench核心语法新手必记语法作用例子timescale定义仿真时间单位/精度timescale 1ns/1psinitial单次执行的仿真块生成激励initial begin clk0; #10 clk1; endforever无限循环生成时钟forever #10 clk~clk;#延时仿真延时单位由timescale定义#200延时200ns$monitor信号变化时打印调试$monitor(time%0t, $time);$stop/$finish暂停/退出仿真$stop;reg/wireTestbench中输入用reg输出用wirereg clk; wire key_out;五、仿真调试步骤ModelSim为例新手最容易卡“仿真怎么跑”这里给极简步骤新建工程ModelSim中新建工程添加key_fsm.v状态机和tb_key_fsm.vTestbench编译代码编译两个文件无报错即可启动仿真右键tb_key_fsm选择“Simulate”添加波形在仿真窗口找到clk、rst_n、key_in、key_out、u_key_fsm.current_state拖到波形窗口运行仿真点击“Run”运行再点击“Zoom Full”全屏显示波形验证逻辑复位阶段rst_n0时current_stateIDLEkey_out0按键按下抖动current_stateKEY_DOWNkey_out仍为0稳定按下1ms后current_stateKEY_STABLEkey_out1按键松开抖动current_stateKEY_UPkey_out0稳定松开1ms后current_stateIDLE。六、状态机Testbench的避坑指南Testbench常见错误❌ 漏写timescale仿真时间混乱❌ 输入信号用wireTestbench中输入必须用reginitial/always只能赋值reg❌ 时钟周期算错50MHz时钟周期是20ns#10翻转别写成#5❌ 复位没给够时间复位至少延时2-3个时钟周期比如#200。状态机仿真调试重点✅ 先看current_state是否按预期切换比如IDLE→KEY_DOWN→KEY_STABLE✅ 再看输出key_out是否只有KEY_STABLE状态为1摩尔机特性✅ 验证消抖逻辑抖动阶段key_out不触发只有稳定1ms后才输出。七、进阶练习从易到难入门级修改Testbench模拟“连续按两次按键”验证输出是否正确进阶级给LED流水灯状态机写Testbench状态机控制LED亮灭顺序提升级给UART接收状态机写Testbench模拟发送1个字节验证是否解析正确。总结Testbench的核心是“模拟真实输入验证输出是否符合预期”先套模板时钟复位输入激励例化DUT再结合状态机的“状态切换”重点验证。先把「按键消抖Testbench」跑通看波形确认状态机逻辑正确再尝试写其他状态机的Testbench——练2-3个例子后Testbench的写法就会形成肌肉记忆状态机的调试也会更顺手。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

算命手机网站开发旅游公司网站建设方案

简介 文章介绍了2025年AI Agent开发的完整路线图,详细解析了从编程与提示工程到监控评估等七个核心开发层次。文章区分了初学者和有经验开发者的学习路径,强调了掌握AI技术的竞争优势,并提供了免费AI大模型学习资源。AI Agent区别于传统聊天…

张小明 2025/12/27 17:15:22 网站建设

网站设计模板百度云手机网站 wap

FaceFusion镜像预装PyTorch/TensorRT,开箱即用 在数字内容爆炸式增长的今天,人脸编辑技术早已不再是实验室里的概念——从短视频平台上的“一键换脸”特效,到影视工业中高精度的演员替代表演,背后都离不开强大而高效的AI推理系统。…

张小明 2025/12/27 17:15:20 网站建设

云南建筑工程网镇江企业网站排名优化

5步解锁原神高帧率:告别60帧限制的终极方案 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 还在为原神60帧的锁帧限制而烦恼吗?想要在提瓦特大陆享受丝滑流畅的14…

张小明 2025/12/27 13:41:25 网站建设

经销做网站都有什么好处温州专业营销网站公司

量子计算:从算法到硬件的全面探索 1. 量子密钥分发(QKD)的进展 在当今的科技领域,量子密钥分发(QKD)系统已经开始投入使用,也有不少公司在销售相关系统。2007 年,ID Quantique 搭建了一个系统,保障了瑞士议会选举期间计票站和日内瓦主投票办公室之间选票传输的安全,…

张小明 2025/12/27 13:41:23 网站建设

妇科医院网站优化服务商网页qq登录电脑版

FaceFusion镜像支持自动化测试脚本执行 在AI视觉应用快速落地的今天,一个看似简单的“换脸”工具,如何从GitHub上的热门项目蜕变为可被企业级系统集成的可靠组件?答案或许就藏在一条不起眼的CI流水线里:当开发者提交代码后不到三分…

张小明 2025/12/27 13:41:22 网站建设