
verilog
文章平均质量分 61
rrr2
这个作者很懒,什么都没留下…
展开
-
CORDIC算法——Verilog
CORIDC 技术并不是什么新鲜的东西。 事实上它可以追溯到 1957 年由 J. Volder 发表的一篇文章。 在上个世纪五十年代, 在大型实际的计算机中的实行移位相加受到了当时技术上的限制, 所以使用 CORDIC 变得非常必要。 到了七十年代, Hewlett Packard 和其他公司出产了手持计算器 , 许多计算器使用一个内部 CORDIC 单元来计算所有的三角函数 ( 了解这件事...原创 2020-05-04 08:45:26 · 2546 阅读 · 0 评论 -
fpga 查表法
查表法查表法的应用范围非常之广,利用查表法,我们可以实现任意的组合逻辑功能,甚至可以实现任意的时序逻辑功能只要系统提供的存储空间(可以是FPGA内部的或外部的)足够大,查表法可以帮助我们实现任何想实现的逻辑功能,这也是为什么我们说查表法是“万能的”了。当然了,对于FPGA设计者来说,通常我们使用查表法,都是为了解决组合逻辑方面的问题,例如,实现任意波形发生器,或者实现任意函数求解器,等等。采...原创 2020-05-04 08:02:43 · 2877 阅读 · 0 评论 -
FPGA 对数计算
FPGA中实现对数运算主要有三种方法:(1)查表在外部直接算好对数值,按照数值范围做个表,存在ram里,到时候查表。为了减少表深度,提高资源利用率,可以考虑去掉部分低位数值,损失一定的精度。(2)使用cordic算法求解对数。(3)log10(x)=ln(x) * log10(e) , log10(e)是常数可以手动先计算好,用IP Core的话多个乘法器。我们要计算以任意数为底的对数...转载 2020-05-03 18:02:30 · 3170 阅读 · 1 评论 -
除法器 FPGA verilog
计算时先将计算的被除数向前扩展7位,随后由高位向低位逐8位递减,滚动记录差值。首先被减数16位在前边拼接7位0,拼接后不会改变被除数的大小,而且方便向下操作。拼接后将此23位数称为mid。之后取mid的高8位与除数作比较,若大于除数,则减去除数,结果低位拼接一。若小于除数,则验证最高位是不是0,若是则左移一位,结果拼接0.若不是则用高九位减去除数,结果拼接两个0.然后将差和后15位以及末尾一个0...原创 2020-05-03 17:37:15 · 2604 阅读 · 0 评论 -
VGA (二)读取ram中数据及verilog 仿真
输出vga 5个时序要求线,RGB H V_sync根据my_vga_syn 输出的行列序号,用一个dsp计算地址,送给vga_dpram ,读取地址对应的值,然后转换为RGB;也可以通过module vga_control( input pixcel_clk , input sys_clk ,//wr input rst_n , ...原创 2020-04-18 08:52:21 · 1146 阅读 · 0 评论 -
双口RAM定义 及多个ram verilog rtl仿真
自己写的采用这种数组形式写的RAM块占用存储器容量的大小,是满足定义的最小的2的n次方。reg [dw-1:0] mem [(1<<aw) -1:0] /* synthesis syn_ramstyle="block_ram" */;如果129个数据,>128需要256的ram所以mem为[7:0],8位地址线比方写了一个有300K的存储器块,那实际会生成一个512K的...原创 2020-04-17 19:05:24 · 3558 阅读 · 0 评论 -
VGA (一)原理 时序及verilog 仿真
硬件原理采用DB15的及接口,主要5根VGA信号线,两根I2C通讯线。5根VGA信号线是V_SYN,H_SYN分别是场同步和行同步走的是3.3V的信号,R,G,B分别是红绿蓝三基色信号。R,G,B三基色信号走的是模拟电平,峰峰值规定在0-0.714V,输入阻抗是75欧。另外两根I2C通讯线就是用来和VGA显示器协调所支持的分辨率。DA转换用 电阻网络进行分压达到DAC效果。1,R,G,B分...原创 2020-04-17 10:27:37 · 5625 阅读 · 0 评论 -
SCCB协议 verilog状态机定时器
OV系列摄像头的模块采用Serial Camera Control Bus (SCCB)总线写进行配置ov摄像头1,SCCB有START 和STOP条件,和I2C非常类似。2,写一寄存器分成三个字节段: 即设备从地址,片内寄存器地址,要写的字节内容。这实际和I2C接口的24C02这个EEPROM写操作是几乎一样的。3,DON’T-CARE BIT 实际就是接受端的ACK回应,0标示回应。...原创 2020-04-17 09:43:51 · 804 阅读 · 1 评论 -
TLC5615 DA转换 verilog FSM
管脚输入数字数据格式,精度是10bit的数据大小,但是是串行输入的,所以要根据协议去传数据。fpga向芯片串行发送,TLC5615芯片读完12bits之后,芯片进行内部转换,然后输出模拟电压具体协议1、sclk串行移位时钟的最快频率限制:该值有spi传输协议限制,一般取决于Tsclk的高低电平的最小值之和。由手册可知,tw(CH)=tw(CL)=25ns(最小值),则fsclk_m...原创 2020-04-11 21:43:07 · 1689 阅读 · 0 评论 -
ADC芯片TLC549 Verilog
refTLC549引脚图REF+:正基准电压输入 2.5V≤REF+≤Vcc+0.1。REF-:负基准电压输入端,-0.1V≤REF-≤2.5V。且要求:(REF+)-(REF-)≥1V。VCC:系统电源3V≤Vcc≤6V。GND:接地端。/CS:芯片选择输入端,要求输入高电平 VIN≥2V,输入低电平 VIN≤0.8V。DATA OUT:转换结果数据串行输出端,与 TTL 电平兼...原创 2020-04-10 20:34:21 · 2778 阅读 · 0 评论 -
利用位操作、移位操作进行取余 求取整数部分和小数部分 二进制乘法
问题求 n % 32 = ???思路可以将其转换为 n & (32-1)或者 n - (n>>5)<<5(n>>5)为除以25的商,<<5为乘以32,然后做差为余数eg求 500除以32的余数:用%的方法:500%32=20使用移位的思路: 先求出500除以32的整数,再用500减去这个整数,即可得到余数J =500&...原创 2020-04-10 16:23:37 · 6212 阅读 · 0 评论 -
FSM(Finite State Machine,有限状态机)设计
有限状态机(Finite State Machine, FSM),根据状态机的输出是否与输入有关,可分为Moore型状态机和Mealy型状态机。Moore型状态机输出仅仅与现态有关和Mealy型状态机不仅与现态有关,也与输入有关,所以会受到输入的干扰,可能会产生毛刺(Glith)的现象,所以我们通常使用的是Moore型状态机。状态机的编码,二进制编码(Binary),格雷码编码(Gray-cod...原创 2020-04-09 23:57:42 · 3256 阅读 · 0 评论 -
PS2 设备 通信协议
PS/2鼠标和键盘履行一种双向同步串行协议。换句话说,每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入。键盘/鼠标可以发送数据到主机,而主机也可以发送数据到设备,接口管脚数据帧格式PS2 到主机通信时钟通常是10~20kHz,一般不用考虑,键盘或者鼠标产生主机到设备PS2 键盘现在均采用第二套扫描码。一个键盘发送值的例子:通码和断码是以什么样的序列发送...原创 2020-04-09 23:42:27 · 3872 阅读 · 0 评论 -
FPGA 去抖模块 verilog代码
`timescale 1ns / 1psmodule key_skew( clk , rst_n , //其他信号 key, led ); //参数定义 parameter DATA_W = 20; parameter CNT20MS_W = 1000000; //输入信...原创 2020-04-09 09:50:21 · 680 阅读 · 1 评论 -
fpga verilog uart
接收机`timescale 1ns/1ps// 系统时钟200MHz,波特率115200module uart_rx #( parameter BAUDRATE = 115200, parameter FREQ = 200_000_000)( input clk, nrst, input rx, output reg [7:0] rdata, ...原创 2020-04-09 09:50:04 · 280 阅读 · 0 评论 -
位运算符 verilog
<<和>>是移位运算符,x<<y的意思就是把x按照位左移y位。比如x = 1100 1010, y = 2那么x << y = 1100 1010 00.原创 2020-03-20 11:23:53 · 2480 阅读 · 0 评论 -
vim 每行行首或行行尾插入, 删除每行行尾的空格
每行的行首都添加一个字符串:%s/^/要插入的字符串每行的行尾都添加一个字符串:%s/$/要插入的字符串解释:% 代表针对被编辑文件的每一行进行后续操作$ 代表一行的结尾处^ 代表一行的开头处Vim 删除每行行尾的空格:% s/\s+$//g...原创 2020-03-04 21:23:13 · 4640 阅读 · 0 评论 -
CRC校验原理及verilog实现
循环冗余校验检错方案 上节介绍的奇偶校验码(PCC)只能校验一位错误,本节所要介绍的循环冗余校验码(CRC)的检错能力更强,可以检出多位错误。 1. CRC校验原理 CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同...原创 2020-02-21 18:31:41 · 9246 阅读 · 1 评论 -
移位寄存器及verilog实现 并行输入串行输出
1 概念移位寄存器内的数据可以在移位脉冲(时钟信号)的作用下依次左移或右移。移位寄存器不仅可以存储数据,还可以用来实现数据的串并转换、分频,构成序列码发生器、序列码检测器,进行数值运算以及数据处理等,它也是数字系统中应用非常广泛的时序逻辑部件之一。...原创 2020-02-20 21:36:00 · 17917 阅读 · 1 评论 -
verilog系统调用函数 $display
`timescale 1ns/1nsmodule display_write_task();reg [7 : 0] r_data;reg [15*8 : 0] r_str;initialbegin r_data = 8'd100; r_str = "I love Verilog!";end initialbegin //显示任务之后会有行结束符 ...原创 2020-02-20 21:25:10 · 1914 阅读 · 0 评论 -
verilog testbench matlab 读取和写入文本代码
1.matlab写入文本因为modelsim没有区分有无符号,所以需要先将十进制有符号数进行量化再转化为二进制数,然后写入文本。(量化位数即输入的位数)代码如下:(请自行调整)Q=16;%16bit量化f_s=qam16/max(abs(qam16));%归一化处理a=round(f_s*(2^(Q-1)-1));%量化fid = fopen ('E:\FM\amatlab\datain...原创 2020-02-20 17:15:35 · 2609 阅读 · 0 评论 -
n位数据选择器 verilog
D0~D3为数据输入端,A0、A1为数据选择端。原创 2020-02-20 17:13:39 · 1326 阅读 · 1 评论 -
仿真时信号出现高阻态、不定态——Test Bench中要做声明
仿真时信号出现高阻态或者不定态zx检查模块例化时是否包含了全部信号列表的信号原创 2020-02-20 12:19:21 · 8138 阅读 · 0 评论 -
Verilog &与&&的区别
逻辑操作符逻辑与 &&逻辑或 ||逻辑非 !位操作符一元非 ~二元与 &二元或 |二元异或 ^归约操作符(单目运算符)与归约 &或归约 |异或归约 ^Verilog中&与&&的区别为:性质不同、计算结果不同、参数不同。一、性质不同1、&:&是位运算符,表示是按位与。2、&&:&a...原创 2020-02-20 11:57:43 · 44926 阅读 · 0 评论 -
例化重载参数
modulemodule exam_prj #(parameter WIDTH=8) //端口内的参数只能在这使用 ( input [WIDTH-1:0] dataa,//[WIDTH-1:0] input [WIDTH-1:0] datab, output reg [WIDTH:0] result ); ...原创 2020-02-20 11:54:44 · 144 阅读 · 0 评论 -
verilog 多种方法实现多位加法器
一位全加器原理法1 例化法一位全加器module adder_1bit( input din_one, //第一个加数 input din_two, //第二个加数 input cin, //进位输入 output sum, //和输出 output cout //进位输出 ); //利用连续赋值语句...原创 2020-02-20 10:15:36 · 12899 阅读 · 3 评论 -
verilog task
1.形式任务定义的形式如下:task task_id; [declaration] procedural_statementendtask注1 定义有下列六点需要注意:(1)在第一行“task”语句中不能列出端口名称;(2)任务的输入、输出端口和双向端口数量不受限制,甚至可以没有输入、输出以及双向端口。(3)在任务定义的描述语句中,可以使用出现不可综合操作符合语...原创 2020-02-19 22:21:29 · 699 阅读 · 0 评论 -
异步时钟域快时钟向慢时钟单比特信号处理方法举例
异步时钟域,快时钟clk_a=64MHz,慢时钟34MHz,从a向b仿宋位宽1bit的pulse_a,写出转换模块module a2b( clk_a , clk_b , rst_n , //其他信号,举例dout pulse_a, pulse_a2b ); //输入信号定义 input ...原创 2020-02-19 16:16:57 · 2101 阅读 · 1 评论 -
FPGA状态机电路综合分析
在FPGA中,状态机是比较常用的。特别是要处理一些串行执行的操作。但是对于我们编写的状态机,综合出来的电路应该是长什么样子的了?这个在初学的时候都是不关心的,但是深入的话,还是要了解的。 状态机分为两种,一种是moore型,一种是mealy型。两种的区别就是输出逻辑是否会由输入决定。 如下图: 状态机分为三部分模块第一部分为次态组合逻辑电路,通过...原创 2020-02-18 22:38:28 · 1801 阅读 · 0 评论 -
verilog case 避免锁存器生成synopsys parallel_case full_case
Synopsys提供了引导语句,设计者可以使用这些引导语句控制DC综合的对象。在设计代码中,引导语句“// synopsys translate_off”后直到“// synopsys translate_on”之间的语句被DC忽略。下面的例子给出了这两个引导语句的用法。举例:// synopsys translate_off`ifdef ZTEIC// synopsys_transla...原创 2020-02-18 22:05:35 · 823 阅读 · 0 评论 -
GENERATE VERILOG
引言在设计中,很多情况下需要编写很多结构相同但是参数不同的赋值语句或者逻辑语句,如果在参数量很大的的情况下,原本的列举就会显得心有余而力不足。c语言中常用for语句来解决此类问题,verilog则为我们提供了generate语句。generate语句有generate-for,generate-if,generate-case三种语句。生成实例可以是以下的一个或多个类型:(1)模块;(2...原创 2020-02-18 11:30:35 · 365 阅读 · 0 评论 -
根据verilog画出对应的电路图
记住基本单元拼接符、非与门或门if=elseif (xx)a=xelsea=y为选择器或比较器,xx为选择端x,y为赋值信号见到Shixu为D触发器case为选择器原创 2020-02-17 18:02:44 · 5246 阅读 · 1 评论 -
CPU FPGA接口传输 verilog
功能文档使用功能->结构->如何通信->时序->时间参数eg1 模块功能异步接口信号通信2 结构接口包括:32bit数据总线16bit地址总线读指示写指示片选指示状态指示3 通信明确步骤观察过程明确输入、输出、双向分清每个步骤的控制方分清每个步骤交流的信息看参数表分清通信双方分别保证哪些参数确保时序下简化设计...原创 2020-02-15 19:15:23 · 1321 阅读 · 1 评论 -
三态门
inout data;data=(wr_en)?wr_data:1'bz;rd_data=data;原创 2020-02-15 16:34:41 · 314 阅读 · 0 评论 -
上升沿下降沿检测电路verilog及RTL仿真
//检测上升沿电路//将原信号flag延迟一拍always @(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin flag_ff0<=0; end else begin flag_ff0<=flag; endendalways @(posedge c...原创 2020-02-13 19:24:49 · 3568 阅读 · 2 评论 -
利用状态机实现简易包文类型识别器
数据包文格式分为数据包文和控制包文格式原创 2020-02-13 19:23:43 · 246 阅读 · 0 评论 -
verilog testbench
目的:输入激励,进行分析校验组成时间标尺信号类型.v例化编写输入信号驱动`timescale 1ns /1nsmodule testbench_name();//时钟和复位reg clk;reg rst_n;//输入reg din;//输出wire dout;parameter CYCLE=20;//周期20nsparameter RST_TIME = 3 ;/...原创 2020-02-11 21:33:57 · 519 阅读 · 0 评论 -
时序逻辑异时钟域造成D触发器亚稳态问题及解决方法
D触发器响应需要满足建立时间和保持时间要求单bit信号引入同步机制,防止亚稳态传播verilog描述always@(posedge clk or negedge rst_n) begin if(rst_n==0) begin a<=0; a1<=0; a2<=0; end else begin a<=dout; a1<=a; ...原创 2020-02-11 10:24:32 · 2109 阅读 · 0 评论 -
组合逻辑 verilog描述
类型可综合原则1.门级逻辑2.选择器 比较器3.运算逻辑原创 2020-02-10 22:15:48 · 796 阅读 · 0 评论 -
verilog对信号二分频 时钟分频信号作为时钟使能信号
//cnt计数器always @(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin cnt<=1'b0; end else if(cnt==2)begin cnt<=1'b0; end else begin cnt<=cnt+1...原创 2020-02-10 09:31:41 · 3604 阅读 · 0 评论