RTL Coding
六朝松鼠
什么都没有写,那我是真的懒~
展开
-
RAM设计-单端口+伪双端口+双端口
定义:1.单端口:读写数据共用一个地址线,一个时钟沿只能进行读写中的一种2.伪双端口:读写数据有自己的时钟、地址、使能信号,时钟可以复用,一组端口只能读,一组端口只能写3.双端口:两组端口均可读可写Tips:端口组的定义:有自己的地址单端口RAM module ram_single( input clk, input rst_n, input sel, input en, input [3:0] addr, input [7:0] wdata, input wr, outpu原创 2020-09-15 13:41:20 · 927 阅读 · 0 评论 -
按键消抖电路设计
用Verilog实现按键抖动消除电路,抖动小于15ms,输入时钟 12MHz设计思路:使用计数器,计算按键时间,如果大于15ms,则认为是有效信号,若小于15ms,则认为是无效信号12MHz 1 clk =83ns 15ms/83ns =180722 = 0x2C1F2module rebounce(input clk,input rst_n,input key_in,output key_out);reg key_out;reg key_in_dly;reg [19:0] cnt原创 2020-09-15 10:47:22 · 2080 阅读 · 0 评论 -
FIFO-同步+异步
同步设计module synFIFO(input clk,rst_n,rd,wr,input [7:0] data_in,output [7:0] data_out,output full,empty);reg [15:0] data_out;reg [7:0] mem [15:0];reg [3:0]rdp,wrp;// mem + write pointeralways @(posedge clk)if(!rst) wrp <= 0;else (wr &&am.原创 2020-09-15 00:59:08 · 166 阅读 · 0 评论 -
CDC方法总结
慢时钟到快时钟,打拍处理module syn(input clk,input rst,input data_in,output data_out);reg data_out;reg [1:0] data_in_dly;always @(posedge clk or negedge rst)if(!rst) data_in_dly <= 0;else data_in_dly <= {data_in_dly[0],data_in};assign data_out = .原创 2020-09-14 22:35:54 · 1425 阅读 · 0 评论 -
Some Cases-多位序列+时分秒计时+时钟切换
请实现对二进制(1011001)的序列检测功能模块每拍并行输入2bit,且顺序为高位先输入当检测到序列,输出一拍高电平脉冲。请用Verilog描述该模块// data[1:0]={data[1],data[0]// data[1:0]=2'b10,则输出为01,data[0]为高位,data[1]为低位// 考虑输入数据的复用情况,当高位满足,低位不满足时,可是可用状态module seqdet2( input clk, input rst_n, input [1:0] data,.原创 2020-09-14 19:35:28 · 249 阅读 · 0 评论 -
Some Cases-毛刺消除+DFF+格雷/二进制
用Verilog消除一个Glitchmodule eligli(input clk,input rst_n,input data,output q_out);reg q_out;reg q_dly;// 使用一个触发器来消除always @(posedge clk or negedge rst_n)if(rst_n) begin q_dly <= 1'bo; q_out <= 1'b0; endelse begin q_dly <= data; q_out &l.原创 2020-09-14 13:11:14 · 304 阅读 · 0 评论 -
序列检测-移位寄存器+FSM
要求:检测10010实现方案一:移位寄存器module seqchk(input x,input clk,input rst_n,output z,output [4:0]q);reg [4:0]q;reg [4:0]q_dly;//将串行数据转为并行,再检测与目标数据是否一致always @(posedge clk or negedge rst_n)if(!rst_n) q <= 5'b0;else q_dly <= q;// 将q的数据延迟一个clk,使得z和x原创 2020-09-14 00:11:16 · 872 阅读 · 0 评论 -
ASIC设计各阶段需要注意的问题
设计流程(前端设计;后端设计)(1)[1.1] 系统结构分析设计[1.2] RTL编码[1.3] 功能验证(2)[2.1] 逻辑综合[2.2] PreLayout STA[2.3] 形式验证 [between RTL Code and 逻辑综合的Netlist](3)[3.1] FloorPlan[3.2] Placement[3.3] 插入Clock Tree[3.4] 全局布线 Global Routing(4)[4.1] 形式验证 [between 逻辑综合的Net原创 2020-09-12 20:53:31 · 521 阅读 · 0 评论 -
模N计数器-计数+使能信号
// 模N,计数器位宽Xmodule count(input clk,input rst_n,output cnt,output en);reg [X:0]cnt;reg en;always @(posedge clk or negedge rst_n)if(!rst_n) begincnt <= X'b0;en <= 0; endelse if(cnt == X'd(N-1)) begincnt <= X'd0;en <= 1'b1; endelse原创 2020-09-09 10:54:23 · 1199 阅读 · 0 评论 -
串并转换-串转并+并转串+LSB/MSB串转并
并转串(4bit)module pal_ser(input clk,input rst_n,input loadinput [3:0]din,output dout);reg [3:0] databuff;always @(posedge clk or negedge rst_n)if(!rst_n) databuff <= 4'b0;else if(load) databuff <= din;else databuff <= databuff <<.原创 2020-09-09 10:46:52 · 1645 阅读 · 0 评论 -
时钟分频-奇/偶数分频
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2020-09-09 10:13:35 · 394 阅读 · 0 评论