当前位置: 首页 > news >正文

搜钛建站网站开发市场规模

搜钛建站,网站开发市场规模,优秀网站的颜色搭配,动漫采集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.huolong8.cn/news/225514/

相关文章:

  • 做兼职去什么网站网站建设目的
  • 网站主页设计费用名贵中药材初加工平台
  • 网站建设销售一个月营业额哈尔滨网站建设方案服务
  • 绵阳的网站建设公司58同城关键词怎么优化
  • 专门做尿不湿的网站网站服务器提供什么服务
  • 湘潭网站建设多少钱 报价表湘潭磐石网络站长网站工具
  • 深圳品牌网站新浪博客怎样上传wordpress
  • 网站做端口是什么wordpress 抓取微信
  • 岳阳卖房网站制作微信小程序商城模板
  • wordpress本地上传视频资料西安网站seo推广
  • 苏州集团网站设计开发网站设计首页动态效果怎么做
  • 建设旅游网站建议手机网站建设的整体流程
  • 网页设计师常用网站做搜狗网站优化首页
  • 宁波网站建设运营成都网站推广排名
  • 建站教程新手怎么做网站phpphp 个人网站
  • 泰安的网站建设公司一点号自媒体平台
  • 网站怎么做能赚钱深圳seo公司
  • 长治市网站开发青浦苏州网站建设
  • 安装Wordpress个人网站怎么超链接公众号
  • 西双版纳住房和城乡建设局网站设计公司网站模板
  • 网站建设的用例图博物馆网站 建设方案
  • 深圳单位网站建设服务公司dede视频网站源码
  • 长沙网站建设q.479185700強眉山招聘网站建设
  • 网站免费的正能量漫画微信公众号里面免费做网站
  • php怎么做网站后台网站开发的技术有
  • 许昌企业网站建设公司马来西亚做公路投标网站
  • 比较好约的网站设计网站免费模板资源
  • 淄博网站排名外包wordpress本地上传图片
  • 怎么在百度制作自己的网站邯郸怎么读
  • 2019年开公司做网站可以吗网络营销软文范例500字