Verilog
wangn1633
这个作者很懒,什么都没留下…
展开
-
手撕代码verilog-剔除最大最小值并求累加
剔除最大最小值并求累加有一个模块,vaild会连续拉高,同时有16bit数据进来,vaild连续拉高的周期数为3-255,然后要把这些数据求和,但是要把最大和最小的数剔除,最后done和sum一起输出。// 去掉一个最大值和一个最小值,剩下的值求和module sum(input clk,input rst_n,input valid,input [15:0] data,output [23:0] sum_out,output done);reg [15:0] max, min;r原创 2020-09-13 22:40:42 · 4008 阅读 · 8 评论 -
手撕代码verilog-任意整数分频
手撕代码verilog-任意整数分频(1)可实现奇数分频和偶数分频,占空比非50%;(2)可实现奇数分频和偶数分频,占空比50%;(1)// 奇数 或 偶数分频;占空比非百分之50module oddevendiv(input clk,input rst_n,input [7:0] div_number,output reg clk_out);// 在 N-1 时,cnt归零;// 在 (N-1)>>1 时, clk_out 反转reg [7:0] cnt;alwa原创 2020-09-13 20:06:42 · 775 阅读 · 0 评论 -
生成01011011101111序列
生成01011011101111序列(1)用移位寄存器(2)用状态机;每个状态产生一个数据// 生成序列01011110……module genseq(input clk,input rst_n,output reg seq);parameter s0=4'h0, s1=4'h1, s2=4'h2,s3=4'h3, s4=4'h4, s5=4'h5, s6=4'h6, s7=4'h7, s8=4'h8, s9=4'h9, s10=4'ha, s11=4'hb, s12=4'hc, s1原创 2020-09-12 22:31:35 · 937 阅读 · 0 评论 -
用Verilog HDL设计曼切斯特编码器
用Verilog HDL设计曼切斯特编码器曼切斯特码:为一种时钟同步的编码技术,被物理层用来同步一个位流的时钟和数据,编码的规则为用01两位码表示0码,用10两位码表示1,用一个周期的正负对称方波来表0,反相波形为1;E.G.Thomas规定1为高跳变到底,0为底跳变到高。IEEE802.4规定1为低跳变到高,0为高跳变到低。`参考https://blog.csdn.net/qq_41844618/article/details/107569177// 10代表0,01代表1// clk是 曼原创 2020-09-12 22:03:17 · 1827 阅读 · 1 评论 -
仲裁器A优先级最高,BC优先级相同
// A 优先级最高,B C优先级相同// 先查询A,再按照上次grant顺序,查B或C;module arbiter2(input clk,input rst_n,input [2:0] req, // [A,B,C]output [2:0] grant);always@(posedge clk or negedge rst_n)if(!rst_n)grant<=3’b000;else case(grant)3’b000: if(req[2]) grant<=3’b100原创 2020-09-11 21:56:58 · 551 阅读 · 0 评论 -
round仲裁器(优先级相同)verilog
// 优先等级一样的仲裁器// 4 个申请// 思路:根据上一次的grant结果,循环查找// module round_arbiter(input clk,input rst_n,input [3:0] req, // 4个申请output reg [3:0] grant ); // 4个赋值always@(posedge clk or negedge rst_n)if(!rst_n) grant<=4'b0;else case(grant) 4'b0000: if(.原创 2020-09-11 21:11:04 · 2365 阅读 · 0 评论 -
verilog实现冒泡法排序
verilog实现冒泡法排序// 冒泡法排序 用verilog实现module sort( input clk, input rst_n, input [3:0] data0,data1,data2,data3,data4,data5,data6,data7,data8,data9, input load, output complete// output reg [3:0] data_out0,data_out1,data_out2,data_out3,data_out4,data_ou原创 2020-08-18 16:02:52 · 8085 阅读 · 2 评论 -
用Verilog实现寻找第一个1和最后一个1的位置
用Verilog实现寻找数据 第一个1和最后一个1的位置寻找数据中的第一个1的位置// find fist onemodule find_ones(input [7:0] x,output [2:0] y);wire [3:0] data_4;wire [1:0] data_2;assign y[2] = | x[7:4];assign data_4= y[2] ? x[7:4] : x[3:0] ;assign y[1] = | data_4[3:2];assign data_原创 2020-08-18 12:59:44 · 12444 阅读 · 3 评论 -
脉冲同步器
跨时钟域处理中,单比特脉冲,由快时钟域到慢时钟域可用脉冲同步器;// 脉冲同步器// 输入高电平,寄存器内容反转,输入低电平寄存器保持不变;module pulse_syn1(input clk1,input clk2,input rst_n,input p_in,output p_out);reg p;reg p0, p1, p2;always@(posedge clk1 or negedge rst_n) if(!rst_n) p<=0; else if(p_i原创 2020-08-02 16:50:43 · 1021 阅读 · 0 评论 -
单端口和双单口RAM的实现
单端口和双单口RAM的verilog实现概念:1 单端口:读写数据共用一个地址线,一个时钟沿只能进行读或者写;2 伪双端口:写数据和读数据有自己的 地址、时钟、读写使能信号;也就是一组端口只能写,一组端口只能读。(读写数据也可共用一个clk,为同步伪双端口ram)3 真双端口:一组端口可读可写,另一组端口也可读可写。(若这两组端口共用一个clk,为同步真双端口ram。若每组有每组的clk,为异步真双端口ram)(1)单端口verilog实现//单端口rammodule ramsingle(原创 2020-06-20 20:40:17 · 3122 阅读 · 6 评论 -
用Verilog实现时钟切换电路
用Verilog实现glitch free时钟切换电路。输入sel,clka,clkb,sel 为0输出clka,sel为1输出clkb。注意:1 保持时钟完整性才能切换;所以添加的时钟使能信号在各自时钟的上升沿触发切换。2 两时钟使能信号不能同时有效,故,对方不使能自己才能使能(弊端:空等一个周期)verilog如下//输入sel,clka,clkb,sel 为0输出clka,sel为1输出clkb。module selclk2( input clka, input clkb, inpu原创 2020-06-20 12:37:05 · 3061 阅读 · 1 评论 -
Verilog实现按键抖动消除电路
用Verilog实现按键抖动消除电路,抖动小于15ms,输入时钟 12MHz添加计数器,计数时间为15ms。若这段时间key_in保持不变,则key_in连接输出。若计数到中间,输入有变化,则重新计时。(若未给出抖动时间,按经验,抖动时间一般会少于20ms. 也就是说,如果数据稳定20ms,认为可以采集该数据。)参考原文链接:https://blog.csdn.net/Reborn_Lee/article/details/89927569按键按下后计数多少后,采样按键值,这个需要简单的运算:输入时原创 2020-06-20 11:54:35 · 7607 阅读 · 1 评论 -
串并转换verilog
串并转换verilogverilog如下//串并转换//串转并module serial2parallel( input clk, input rst_n, input datain, input shift_en, input load, output reg [15:0] dataout); reg [15:0] shiftr;//串转并always@(posedge clk) if(!rst_n) shiftr<=0; else if(shift_en) s原创 2020-06-14 17:04:19 · 3592 阅读 · 0 评论 -
跨时钟域单比特脉冲同步
跨时钟## 标题域 单比特 脉冲 同步用两级同步器同步,由快时钟域向慢时钟域传输的时候clk_b有可能采样不到clk_a传输过来的信号。参考原文https://blog.csdn.net/MaoChuangAn/article/details/89917930引用“下面是更常见的,clka下的脉冲信号,同步到clkb时钟域下,它对clka与clkb的时钟频率关系没有任何限制,快到慢,慢到快都没有问题。其主要的原理就是先把脉冲信号在clka下展宽,变成电平信号,再向clkb传递,当确认clkb已经“看见原创 2020-06-14 16:08:49 · 1125 阅读 · 0 评论 -
乐鑫笔试2
三、设计一个自动饮料售卖机,共有两种饮料,其中饮料A每个10分钱,饮料B每个5分钱,硬币有5分和10分两种,并考虑找零。要求用状态机实现,定义状态,画出状态转移图,并用Verilog完整描述该模块Verilog如下module outab( input clk, input rst_n, input [1:0] want, input [1:0] money, //2'b10: 10 cents 2'b01: 5 cents output reg [1:0] ab, //2'b10:a原创 2020-06-10 20:59:19 · 982 阅读 · 0 评论 -
乐鑫笔试题1
一、将一个串行执行的C语言算法转化为单拍完成的并行可综合verilogunsigned char cal_table_high_first(unsigned char value){ unsigned char i ;unsigned char checksum = value ; for (i=8;i>0;--i) { if (check_sum & 0x80) { check_sum = (check_su原创 2020-06-09 22:50:45 · 740 阅读 · 0 评论 -
非整数倍分频
非整数倍倍分频占空比非50%//4.5分频module clkdivpoint ( input clk, input rst_n, output clk_out); reg [9:1] shiftr;reg shift1, shift5, shift6;always@(posedge clk) if(!rst_n) shiftr<=9'b0_0000_0001; else shiftr<={shiftr[8:1],shiftr[9]};always@(nege原创 2020-05-20 18:30:35 · 964 阅读 · 0 评论 -
格雷码与二进制码转换
格雷码转二进制码二进制码转格雷码代码如下//gray to bin module gray2bin #(parameter ADDR_WIDTH=8)( input [ADDR_WIDTH-1:0] grayin, output [ADDR_WIDTH-1:0] binout, output reg [ADDR_WIDTH-1:0] binout1, output [ADDR_WIDTH-1:0] grayout );//assign binout=gray2bin(grayin)原创 2020-05-20 16:17:10 · 1194 阅读 · 0 评论 -
异步FIFO
一 FIFO分类1 同步FIFO:读写时钟频率相位都相同2 异步FIFO:读写时钟频率或相位不同二 异步FIFO代码如下module asynfifo #(parameter data_width=8, depth=16, addr_width=4) ( input wclk, input wresetn, input [data_width-1 : 0] dat...原创 2020-03-30 20:19:20 · 323 阅读 · 0 评论 -
同步FIFO硬件代码
同步FIFO数据宽度、FIFO深度 可配置module synfifo #(parameter DEPTH=16, ADDR_WIDTH=4, DATA_WIDTH=8)( input clk, rst_n, rd, wr, input [DATA_WIDTH-1:0] datain, output reg [DATA_WIDTH-1:0] dataout, output reg empty, full );reg [DATA_WIDTH-1:0] mem [D原创 2020-05-19 18:53:58 · 656 阅读 · 0 评论 -
检测序列011011
检测序列011011module seqdet ( input clk, input rst_n, input data, output reg en);parameter idle=4'b0000, seq1=4'b0001, seq2=4'b0010, seq3=4'b0011, seq4=4'b0100, seq5=4'b0101, seq6=4'b0110;reg [3:0] state; //一段式状态机always@(posedge clk)原创 2020-05-18 23:53:28 · 1012 阅读 · 0 评论