FPGA verilog 模板设计示例(持续更新)

ops/2024/9/23 2:24:28/
重温一下大道至简的至简设计法,正式开发两年多回顾当时的设计方法,又有了更多的体会和感触,希望将模块化运用起来会更有条例。

1 FPGA设计代码模板

信号命名规范:
1 clk 表示时钟信号小写
2 rstn 表示高电平复位信号 小写
3 rst_n 表示低电平复位信号 小写
4 模块的命名:将模块英文名称的各个单词首字母组合起来,形成35个单词,首字母大写
5 参数、宏定义,必须大写

1.1 计数器模板

always@(posedge clk or negedge rst_n) beginif(rst_n == 1'b0) 	cnt <= 'd0;else if(add_cnt) beginif(end_cnt)		cnt <= 'd0;else 			cnt <= cnt + 1'b1;end
end

这一段计数器模板可以完全套用,需要改变的是add_cnt 和 end_cnt 的值

assign add_cnt = a == 2;
assign end_cnt = add_cnt && cnt == 10-1;

1.2 状态机模板

我们采用四段式状态机
第一段:同步时序的always模块,格式化描述次状态迁移到现状态寄存器

always@(posedge clk or negedge rst_n) beginif(!rst_n) 				state_c <= IDLE;else 					state_c <= state_n;
end

第二段,组合逻辑always块,描述状态转移条件判断

always@(*) begincase(state_c)IDLE:beginif(idle2s1_start) 		state_n = S1;else					state_n = state_c;endS1: beginif(s12s2_start)			state_n = S2;else 					state_n = state_c;end	S2: beginif(s22idle_start)		state_n = IDLE;else 					state_n = state_c;enddefault:					state_n = IDLE;end case;	
end

第三段:前两段可以模板拿来即用,这一段需要自己根据项目需要来设定;

assign idle2s1_start = (state_c == IDLE) && (XX);
assign s12s2_start   = (state_c == S1) && (XX);
assign s22idle_start = (state_c == S2) && (XX);

第四段:也是根据实际项目需要来设定

always@(posedge clk or negedge rst_n) beginif(!rst_n) 				out1 <= 1'b0;else if(state_c == S1)  out1 <= 1'b1;else 					out1 <= 1'b0;
end

http://www.ppmy.cn/ops/19594.html

相关文章

MATLAB矩阵

MATLAB 矩阵 矩阵是数字的二维数组。 在MATLAB中&#xff0c;您可以通过在每行中以逗号或空格分隔的数字输入元素并使用分号标记每行的结尾来创建矩阵。 例如&#xff0c;让我们创建一个45矩阵一- 示例 a [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8] MATLAB将执行上述语…

gitlab关联新仓库

如果你想要将现有的Git仓库提交&#xff08;或推送&#xff09;到一个新的远程地址&#xff0c;你可以通过以下步骤来完成&#xff1a; 查看现有的远程仓库&#xff1a; 首先&#xff0c;确认你当前的仓库有哪些远程地址。 git remote -v如果输出中显示了旧的远程地址&#x…

粒子群算法与优化储能策略python实践

粒子群优化算法&#xff08;Particle Swarm Optimization&#xff0c;简称PSO&#xff09;, 是1995年J. Kennedy博士和R. C. Eberhart博士一起提出的&#xff0c;它是源于对鸟群捕食行为的研究。粒子群优化算法的基本核心是利用群体中的个体对信息的共享从而使得整个群体的运动…

SSH Key生成

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【海博】雅思该怎么考?

文章目录 考试类型 考试内容 考试形式 备考资源 考试报名 考试成绩 考试类型 学术类&#xff08;A类&#xff09;适用于&#xff1a;出国留学申请本科&#xff0c;研究生及以上学位&#xff0c;或获得专业资质。学术类考试评估考生的英语水平是否满足进行大学或研究生学习…

线程的状态

1.线程状态的种类 NEW:Thread 对象有了,调用 start系统内部的线程还未创建。RUNNABLE:指的是,这个线程"随叫随到"。 a)这个线程正在 CPU 上执行 b)这个线程虽然没在 CPU 上执行,随时可以调度到 CPU 上执行BLOCKED:进行锁竞争的时候产生的阻塞&#xff08;本文暂不涉…

asp.net core 自定义过滤器 注入的几种方式和实现

在 ASP.NET Core 中&#xff0c;过滤器&#xff08;Filters&#xff09;是一种在 MVC 应用程序中运行代码的方法&#xff0c;可以在操作&#xff08;Actions&#xff09;执行之前或之后运行。过滤器可以应用于控制器&#xff08;Controllers&#xff09;或特定的操作方法。过滤…

小程序APP屏幕悬浮按钮可拖动可展开

示例&#xff1a; 插件地址&#xff1a;suspensionButton 悬浮按钮 - DCloud 插件市场 使用方式&#xff1a; import pxSuspenButton from /components/px-suspen-button/index components: { pxSuspenButton }, <pxSuspenButton :centerIcon"centerIcon" :bgCo…