完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以前很少用for语句,以为是不可综合的。在印象中好像只用循环生成(for...generate)语句综合过多个模块。最近在仔细研读《轻松成为设计高手——Verilog HDL使用精解》这本书,才知道for语句在组合逻辑中大有用处。 (1)for用在纯组合逻辑中 举例:4位左移器(将低4位输入的数移到高4位) //Leftshift for 4 bits module For_Leftshift( input wire [3:0]inp, input wire L_EN, output reg [7:0]result ); integer i; always@(inp or L_EN) begin result[7:4] = 0; result[3:0] = inp; if(L_EN == 1) begin for(i=4;i<=7;i=i+1) begin result = result[i-4]; end result[3:0] = 0; end end endmodule 综合结果(RTL视图,实际是一个4位选择器) [/url] (2)for不仅可以用在组合逻辑中,而且还可以用在时序逻辑中,用于在1个周期类完成整个for循环。 举例:在一个周期类完成对输入总线中高电平位的计数,则利用for循环实现加法器 module For_Counter( input wire clk, input wire rst_n, input wire [12:0] data, output wire [3:0] numout ); integer i; reg[3:0] num; always @(posedge clk) begin if(!rst_n) num = 0; else begin for(i=0;i<13;i=i+1) if(data) num = num + 1; end end assign numout = num; endmodule 综合结果(RTL视图,加法器+触发器) [url=http://download.bbs.ednchina.com/images/attachments/201403/original/5000179125_TIME_1395720542725.jpg] 综上,可以看出for循环是可以综合的,而且效率很高。但所消耗的逻辑资源较大。在对速度(时钟周期数)要求不是很高的情况下,可以多用几个时钟周期完成任务,而没有必要用for循环来做。 |
|
相关推荐
|
|
迅为RK3568开发板篇OpenHarmony配置HDF驱动控制LED-配置创建私有配置文件
1270 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-初识设备树之Makefile修改
1365 浏览 0 评论
飞凌嵌入式-ELFBOARD-ELF 2硬件知识分享之Debug
1057 浏览 1 评论
飞凌嵌入式ElfBoard ELF 1板卡-烧录流程介绍之单独更新内核
2680 浏览 1 评论
飞凌嵌入式ElfBoard ELF 1板卡-TF卡烧录流程之烧写过程
1106 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-14 11:16 , Processed in 0.442637 second(s), Total 63, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号