网站开发制作阶段的说课稿水发规划设计有限公司

news/2025/9/23 9:53:40/文章来源:
网站开发制作阶段的说课稿,水发规划设计有限公司,织梦网站安装出现dir,wordpress 自定义表一、 软件平台与硬件平台 软件平台#xff1a; 1、操作系统#xff1a;Windows-8.1 2、开发套件#xff1a;ISE14.7 3、仿真工具#xff1a;ModelSim-10.4-SE 硬件平台#xff1a; 1、FPGA型号#xff1a;XC6SLX45-2CSG324 二、 原理介绍 我的开发板上有4个LED灯#xf…一、 软件平台与硬件平台   软件平台   1、操作系统Windows-8.1   2、开发套件ISE14.7   3、仿真工具ModelSim-10.4-SE   硬件平台   1、FPGA型号XC6SLX45-2CSG324 二、 原理介绍   我的开发板上有4个LED灯原理图如下         由原理图可知仅当FPGA的对应管脚输入低电平时LED才会亮流水灯的效果可以轮流让四个对应管脚输出低电平来产生。 三、 目标任务   编写四个LED流水的Verilog代码并用ModelSim进行仿真仿真通过以后下载到开发板进行测试要求开发板上每个LED亮的时间为1s。 四、 设计思路与Verilog代码编写   由于每个LED亮的时间为1s所以首先很自然想到产生一个1s的时钟用来驱动后续逻辑有了这个1s的时钟以后就可以在这个1s时钟的节拍下对LED的输出进行以移位操作来产生流水灯的效果。    1、1s时钟的分频逻辑    由于主时钟是50MHz周期为20ns所以可以利用50MHz主时钟驱动一个计数器当计数器的值每次到达24999999时消耗的时间为25000000*20ns0.5s这时把分频器的输出反转并把计数值清0这样分频器的输出就会每隔0.5s翻转一次产生了一个1s的时钟。   Verilog代码如下 // // 功能产生1s的时钟 // always (posedge I_clk or negedge I_rst_n) beginif(!I_rst_n)beginR_cnt_ls 32d0 ; R_clk_ls_reg 1b1 ;end else if(R_cnt_ls 32d24_999_999)beginR_cnt_ls 32d0 ;R_clk_ls_reg ~R_clk_ls_reg ; endelseR_cnt_ls R_cnt_ls 1b1 ; endassign W_clk_ls R_clk_ls_reg ;     2、移位逻辑   有了1s的时钟信号以后就在这个1s时钟信号的驱动下对输出的LED寄存器进行移位操作产生流水效果。   Verilog代码如下 // // 功能对输出寄存器进行移位产生流水效果 // always (posedge W_clk_ls or negedge I_rst_n) beginif(!I_rst_n) R_led_out_reg 4b0001 ; else if(R_led_out_reg 4b1000)R_led_out_reg 4b0001 ;else R_led_out_reg R_led_out_reg 1 ; endassign O_led_out ~R_led_out_reg ; 五、 ModelSim仿真   写好逻辑以后为了确定时序是正确的最好写一个测试文件对功能进行仿真为了加快仿真速度修改分频逻辑计数器的计数值为24然后编写测试文件测试文件中激励产生的Verilog代码如下 initial begin// Initialize InputsI_clk 0;I_rst_n 0;// Wait 100 ns for global reset to finish#100;I_rst_n 1;// Add stimulus hereendalways #10 I_clk ~I_clk ;     仿真的时序图如下图所示   可以看到时序完全正确接下来就是绑定管脚生成bit文件下载到开发板测试了。 六、 进一步思考——C语言流水灯与Verilog流水灯区别   看完网上《Verilog那些事》系列博文以后作者提出了一种“仿顺序操作”方法其实以前自己写代码的时候无形之中一直在用这种思想但是一直没有提炼出来看完作者的介绍以后才发现确实是有那个“仿顺序”的味道。详细的博文请参考博客园博主akuei2的系列博文。这里我在总结一遍给以后留个印象。   C语言实现流水灯的大致代码框架如下     while(1)     {       1、让第1个LED亮其他的灭       2、延时1s       3、让第2个LED亮其他的灭       4、延时1s       5、让第3个LED亮其他的灭       6、延时1s       7、让第4个LED亮其他的灭       8、延时1s       }   在while(1)里面代码是一行一行的执行最后一行执行完毕以后在回到第一行重新开始新一轮的执行。就这样产生了流水的效果。   看到这里有人应该突然明白了吧这不正好就是Verilog中的一个状态机么。对应的Verilog代码也可以写出来了    always (posedge I_clk)   begin          case(R_state)                 第1个状态让第1个LED亮其他的灭下一状态是第2个状态                 第2个状态延时1s下一状态是第3个状态                 第3个状态让第2个LED亮其他的灭下一状态是第4个状态                 第4个状态延时1s下一状态是第5个状态                 第5个状态让第3个LED亮其他的灭下一状态是第6个状态                 第6个状态延时1s下一状态是第7个状态                 第7个状态让第4个LED亮其他的灭下一状态是第8个状态                 第8个状态延时1s下一状态是第1个状态                 default                   endcase   end   具体的代码如下 // // 功能“仿顺序操作” // always (posedge I_clk or negedge I_rst_n) beginif(!I_rst_n)beginR_state 3b000 ; R_cnt_ls 32d0 ;endelsebegin case(R_state)C_S0:beginR_led_out_reg 4b0001 ;R_state C_S1 ; endC_S1:beginif(R_cnt_ls C_CNT_1S)beginR_cnt_ls 32d0 ;R_state C_S2 ;endelseR_cnt_ls R_cnt_ls 1b1 ; endC_S2:beginR_led_out_reg 4b0010 ;R_state C_S3 ; endC_S3:beginif(R_cnt_ls C_CNT_1S)beginR_cnt_ls 32d0 ;R_state C_S4 ;endelseR_cnt_ls R_cnt_ls 1b1 ; endC_S4:beginR_led_out_reg 4b0100 ;R_state C_S5 ; endC_S5:beginif(R_cnt_ls C_CNT_1S)beginR_cnt_ls 32d0 ;R_state C_S6 ;endelseR_cnt_ls R_cnt_ls 1b1 ; endC_S6:beginR_led_out_reg 4b1000 ;R_state C_S7 ; endC_S7:beginif(R_cnt_ls C_CNT_1S)beginR_cnt_ls 32d0 ;R_state C_S0 ;endelseR_cnt_ls R_cnt_ls 1b1 ; end default: R_state 3b000 ; endcase end endassign O_led_out ~R_led_out_reg ;   时序图如下图   时序图仍然正确实现了流水灯的效果 七、 总结   1、所谓的“仿顺序操作”实际上就是一个状态机通过状态的跳变实现“顺序执行”的效果。这种思想在后面写接口时序的时候还是挺管用的今后可以多多琢磨琢磨。   2、 C语言的while(1)和Verilog语言的always (posedge I_clk)有类似的地方只要CPU的时钟存在它们就一直执行下去。书上都说C语言是一种串行语言Verilog是一种并行语言实际上这里也能有体会C语言里只能有1个while(1)语句进入while(1)以后CPU就出不来了而Verilog中可以有多个always (posedge I_clk)语句并且每个always (posedge I_clk)同时运行的这就是两种语言最大的区别吧。   八、 附录   1、分频1s产生流水灯的完整代码 module led_work_top (input I_clk ,input I_rst_n ,output [3:0] O_led_out );reg [31:0] R_cnt_ls ; wire W_clk_ls ; reg R_clk_ls_reg ; reg [3:0] R_led_out_reg ;// // 功能产生1s的时钟 // always (posedge I_clk or negedge I_rst_n) beginif(!I_rst_n)beginR_cnt_ls 32d0 ; R_clk_ls_reg 1b1 ;end else if(R_cnt_ls 32d24_999_999)beginR_cnt_ls 32d0 ;R_clk_ls_reg ~R_clk_ls_reg ; endelseR_cnt_ls R_cnt_ls 1b1 ; endassign W_clk_ls R_clk_ls_reg ;// // 功能对输出寄存器进行移位产生流水效果 // always (posedge W_clk_ls or negedge I_rst_n) beginif(!I_rst_n) R_led_out_reg 4b0001 ; else if(R_led_out_reg 4b1000)R_led_out_reg 4b0001 ;else R_led_out_reg R_led_out_reg 1 ; endassign O_led_out ~R_led_out_reg ;endmodule     2、 “仿顺序操作”产生流水灯完整代码 module led_work_top (input I_clk ,input I_rst_n ,output [3:0] O_led_out ); reg [31:0] R_cnt_ls ; reg [3:0] R_led_out_reg ; reg [2:0] R_state ;parameter C_CNT_1S 32d49_999_999 ; parameter C_S0 3b000 ,C_S1 3b001 ,C_S2 3b010 ,C_S3 3b011 ,C_S4 3b100 ,C_S5 3b101 ,C_S6 3b110 ,C_S7 3b111 ;// // 功能仿顺序操作 // always (posedge I_clk or negedge I_rst_n) beginif(!I_rst_n)beginR_state 3b000 ; R_cnt_ls 32d0 ;endelsebegin case(R_state)C_S0:beginR_led_out_reg 4b0001 ;R_state C_S1 ; endC_S1:beginif(R_cnt_ls C_CNT_1S)beginR_cnt_ls 32d0 ;R_state C_S2 ;endelseR_cnt_ls R_cnt_ls 1b1 ; endC_S2:beginR_led_out_reg 4b0010 ;R_state C_S3 ; endC_S3:beginif(R_cnt_ls C_CNT_1S)beginR_cnt_ls 32d0 ;R_state C_S4 ;endelseR_cnt_ls R_cnt_ls 1b1 ; endC_S4:beginR_led_out_reg 4b0100 ;R_state C_S5 ; endC_S5:beginif(R_cnt_ls C_CNT_1S)beginR_cnt_ls 32d0 ;R_state C_S6 ;endelseR_cnt_ls R_cnt_ls 1b1 ; endC_S6:beginR_led_out_reg 4b1000 ;R_state C_S7 ; endC_S7:beginif(R_cnt_ls C_CNT_1S)beginR_cnt_ls 32d0 ;R_state C_S0 ;endelseR_cnt_ls R_cnt_ls 1b1 ; end default: R_state 3b000 ; endcase end endassign O_led_out ~R_led_out_reg ;endmodule   3、测试记录文件完整代码 module tb_led_work_top;// Inputsreg I_clk;reg I_rst_n;// Outputswire [3:0] O_led_out;// Instantiate the Unit Under Test (UUT)led_work_top U_led_work_top (.I_clk(I_clk), .I_rst_n(I_rst_n), .O_led_out(O_led_out));initial begin// Initialize InputsI_clk 0;I_rst_n 0;// Wait 100 ns for global reset to finish#100;I_rst_n 1;// Add stimulus hereendalways #5 I_clk ~I_clk ;endmodule   欢迎关注我的公众号FPGA之禅 转载于:https://www.cnblogs.com/liujinggang/p/9463589.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

制作微信网站免费装修设计效果图

5. Morphology_3.cpp 提取图像中水平线和垂直线的opencv示例 原图notes.png 灰度化 二值化 提取水平线 提取垂直线 对垂直图像取反 提取边缘 使用膨胀操作处理边缘 平滑处理:vertical.copyTo(smooth); blur(smooth, smooth, Size(2, 2)); smooth.copyTo(vertical, e…

如何给网站做证书沈阳城乡建设官方网站

文章目录 方案1 nohup &方案2 screen 方案1 nohup & 1、单独使用 nohup 执行脚本,如下图所示,终端会被接管,就是标准输入stdin 被关闭了,使用ctrlc会导致终止执行,但是可以关闭这个终端,重新打开终…

怎么样做网站赚钱东莞凤岗

linux 怎么写java一、环境安装由于使用 yum 或者 apt-get 命令 安装 openjdk 可能存在类库不全,从而导致用户在安装后运行相关工具时可能报错的问题,所以此处我们推荐采用手动解压安装的方式来安装 JDK。具体步骤如下:1.下载 JDK进入Oracle官…

Git仓库ssh不同环境配置

1.生成公私钥 ssh-keygen -t ed25519 -C "xx@163.com" -f ~/.ssh/id_ed25519_work 一直回车即可,完成后会生成这个打印的字符图2.生成之后会保存到c/Users/PC/.ssh文件夹下 3.重复上面的步骤生成多个公私…

超大附件怎么发送的高效解决方案与技巧

在日常办公中,处理大文件的需求越来越普遍,但超大附件怎么发送一直是个令人头痛的问题。许多用户因电子邮件服务的附件限制而不得不寻找其他方案。例如,Ftrans Outlook超大附件插件就成为了众多企业的首选工具,因为…

dm sql 缓存区

SQL缓冲区提供在执行SQL语句过程中所需要的内存,包括计划、SQL语句和结果集缓存。很多应用当中都存在反复执行相同SQL语句的情况,此时可以使用缓冲区保存这些语句和它们的执行计划,这就是计划重用。 查看现有设置 S…

网站建设项目表商标注册网上查询网

单元测试目的和意义 对于非正式的软件(其特点是功能比较少,后续也不有新特性加入,不用负责维护),我们可以使用debug单步执行,内存修改,检查对应的观测点是否符合要求来进行单元测试&#xff0c…

给国外传输大文件的最佳策略与解决方案

随着全球化的发展,给国外传输大文件的需求不断增加。企业在进行数据跨境传输时,可能会遇到法律合规性、网络速度和安全性等多重挑战。为了确保高效可靠的文件传输,企业可以了解并应用Ftrans飞驰云联数据跨境传输管控…

网站注销流程wordpress保护原创

文章目录1. 题目2. 解题2.1 递归2.2 BFS1. 题目 设计一个算法,可以将 N 叉树编码为二叉树,并能将该二叉树解码为原 N 叉树。 一个 N 叉树是指每个节点都有不超过 N 个孩子节点的有根树。 类似地,一个二叉树是指每个节点都有不超过 2 个孩子节…

学校网站的建设目标wordpress淘宝客跳转

解决图论问题中的最短路径问题一般有四种算法,分别是Floyd算法、Dijkstra算法、Bellman-Ford算法和SPFA算法,下面介绍一下这几种算法的模板和原理用途。 Floyd算法 原理:Floyd本质上是一个动态规划的思想,每一次循环更新经过前k…

网站内页是什么十堰的网络优化公司

93 复原IP地址 给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。你 不能 重新排序或删除 s 中的任何数字。你可以按 任何 顺序返回答案。 有效 IP 地址 正好由…

申请网站建设的请示学动漫制作专业后悔吗

题目还好。只是第一题题目错了,第二题真的难 今日分数 Rankperson分数1xxy2302蒟蒻2004xjq1805zyc17017hjq7519hzb2026lw1026lrz10 正题 T1:jzoj4024-石子游戏【SG函数,博弈论】 博客链接:https://blog.csdn.net/mr_wuyongcong/article/d…

怎么在手机上做微电影网站昆明网站建设哪家比较

Eureka是Netflix开发的服务发现组件,它能够实现服务注册、注销、健康检查,服务发现等功能,是Spring Cloud中常用的服务发现工具。Eureka Server与Eureka Client之间采用心跳机制,进行健康检查,每30秒发送一个心跳&…

做演讲视频的网站上海网站建设 s

AndroidStudio 2024 Win10/11最新安装配置 教程目的: (从安装到卸载) ,针对Kotlin开发配置,gradle-8.2-src/bin下载慢,以及Kotlin构建慢的解决 好久没玩AS了,下载发现装个AS很麻烦,就觉得有必要出个教程了(就是记录一下:嘻嘻) 因…

云南能投基础设施投资开发建设有限公司网站建设网站技术公司电话

一、环境搭建 1、安装pythonpycharm软件 。python安装网址官网:About Python™ | Python.org 根据自己的电脑系统选择最新版本 下载到本地,选择安装路径并配置好环境变量 验证安装是否成功 搜索中录入cmd 打开命令窗口 录入python显示一下版本号表示…

做网站买二手域名深圳市企业网站建设

Wannafly挑战赛24 题目连接 https://www.nowcoder.com/acm/contest/186#question A.石子游戏 题解 注意到当石子个数为偶数的时候,每回合都会减少一堆偶数石子,因此,先手必胜. 我们可以不考虑奇数堆石子,因为必胜方始终可以动偶数堆. 当必败方将奇数堆分成一堆偶数和一堆…

idea mvn package 报错java head space/ java.lang.OutOfMemoryError: Java heap space

近期更换电脑,重新安装idea环境后,首次 mvn package 报错java heap space 。 使用mvn -X package 发现是Xmx8196 需要使用64位 open JDK 才可以支持 所以使用cmd 查看旧电脑和新电脑 java version 新电脑不是64位…

湖南网站建设磐石网络答疑室内设计小白怎么入行

模板模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式…

大环境不好,这几个赚钱网站可以试试

广告Google Adsense - Google 的展示广告网络,可帮助网站进行流量变现。 万维广告 - 更简单优雅的广告网络,帮助技术文档/开源社区等技术站点投放强相关的云服务广告,获取可观收入。 穿山甲 - 帮助 APP 开发者进行流…

Day20类与对象的小结

1,类与对象 类是一个模板,是抽象的(共性),对象时一个具体的实例 2,方法 定义,调用 3,对象的引用 引用类型:基本类型(8种) 对象是通过引用来操作的的,即栈-->堆 4,属性:又名字段(field) 成员变量 默认…