
FPGA
文章平均质量分 56
者乎之类的
山南水北
展开
-
Verilog 三种调用模块方式
Verilog 三种调用模块方式1.把参数设置为一个端口子模块:module led2(input Clk,input Rst_n,input [15:0] Cnt_max,output reg led);top模块例化:led2 u0(.Clk(Clk),.Rst_n(Rst_n),.Cnt_max(24999),.led(led1));2.参数传递:子...原创 2019-11-14 10:51:19 · 43397 阅读 · 5 评论 -
好玩的modelsim波形仿真显示汉字
先上效果图verilog代码`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company:// Engineer://// Create Date: 07:08:29 03/06/2020// Design Na...原创 2020-03-06 08:27:53 · 1456 阅读 · 0 评论 -
vivado fir ipcore 进制位宽小数位宽的问题
第一个数0001c2的由来:输入数据A6(-0.707),8位有符号数滤波器系数第一个-5,14位有符号数先将两乘数得22位,扩展为24位再相乘为什么是24位?AXI总线结构必须以字节为单位如果是扩展到22位的话是c001c2(如下图) ,所以应该不是扩展到22位ps:这里我设置的输入数据小数位为0,即A6(10100110)表示-90,-90*-5=450 (1c2)是正确的。但是如果我设置小数位为7位,结果是一样的,还是1c2你把vivado 显示调整成7位小数,就变成:3.原创 2021-05-02 11:48:44 · 1310 阅读 · 2 评论 -
边沿检测--两种verilog代码写法
1.将接收信号,延迟一个clk,然后将接收信号与延迟信号进行操作得到边沿检测结果。上升沿检测:always@(posedge clk)rx1 <= rx;assign pos = rx && !rx1;2.设一个两比特寄存器,将接收数据一次存入寄存器,判断第0比特为1,第1比特为0,则检测到下降沿。reg [1:0] neg_r = 0;always @(posedge clk)neg_r <= {neg_r[0],rx};wire neg_flag =(neg原创 2020-08-02 14:58:37 · 756 阅读 · 0 评论 -
仿真时间`timescale 1ns/1ps 的定义 延迟赋值与阻塞赋值非阻塞赋值的一个小问题
抄自李锐博恩博客:https://blog.youkuaiyun.com/Reborn_Lee/article/details/1078887981.先再次说一下仿真时间`timescale 1ns/1ps 的定义·timescale 定义仿真时间单位与精度,1ns是时间单位,即在仿真中用#10表示延迟10ns。1ps表示时间精度,比如你写 #3.5547968525 a <= 1;c <= 1;,那么它时间精度也只会有1ps(即在3.555ns时赋值语句便生效)。2.最常见赋值间延迟语句mo转载 2020-08-09 14:32:20 · 41069 阅读 · 0 评论 -
verilog位数扩展的一个问题
群里讨论的一道题疑点无非就是x和y的值。一个是先扩展位宽再取反,一个是先取反再扩展。x=b+{~a};加了括号,先取反再扩展成8比特,y=b+~a;没加括号,先扩展再取反。原创 2020-08-07 22:11:38 · 1080 阅读 · 0 评论 -
c/c++与verilog中switch-case之不同
c/c++switch(表达式){case 结果1 :执行语句;break;case 结果2 :执行语句;break;default:执行语句;break;}verilogwire sel [2:0] ;always@(posedge clk)begin casez(sel) 3’b001: data_out <= data_in0 ; 3’b01?: data_out <= data_in1 ; 3’b1??: data_out <= data_in原创 2021-02-12 19:29:25 · 2988 阅读 · 1 评论 -
verilog语法问题--
1.当多层if嵌套时,else总是与与它最近的if配对。module qqq ( input clk, input reset, // Synchronous active-high reset input en, output [3:0] q); always@(posedge clk) begin if(reset) q <= 0; else if(en) if原创 2020-07-03 09:41:36 · 347 阅读 · 0 评论 -
matlab生成数据以二进制数据格式写入txt文件中
1.matlab生成数据以二进制数据格式写入txt文件中QB=16;%将生成的数据以二进制数据格式写入txt文件中Q_x=round(se1_addnoise/max(abs(se1_addnoise))*(2^14-1););%QB比特量化%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%新建文本文件前,必须建好文件存放的目录文件夹,否则出现提示信息:%??? Error using ==> fprintf%Invalid file identifier原创 2021-11-27 14:20:31 · 5271 阅读 · 0 评论 -
心中有电路
reg rstb; always @ (posedge clk_in or negedge rst_n )begin if (!rst_n) begin rstb<=1'b0; end else if(czt_en_100m)begin rstb<=1'b0; end else if(addr_din_rd[8:0]==9'd511) begin rstb<=1'b1; end else be原创 2021-11-04 15:12:11 · 189 阅读 · 1 评论 -
verilog实现czt变换
没太有心思写具体过程了,仅记录设计(编代码)过程中的几个版本原理及实现步骤版本一刚开始写不太会写,考虑数据流方式进行fft,ifft等操作,数据延迟搞不清,就将数据全部进行加载,类似于将串行数据流并行读入并使用,这样使用时就不用考虑延迟对不准数据使用错误了。即://数据wire signed [15:0]inputdata_r; gen_inputdata u_gen_inputdata( .clka(clk_in), .addra(inputdata_addr),原创 2021-10-06 11:17:54 · 1571 阅读 · 2 评论 -
vivado fir核 实现 成型滤波及其前端速率匹配
一、滤波器系数生成B = rcosfir(R, N_T, RATE, T)N_T可以是小数,rom初始数据所需的coe文件用:memory_initialization_radix=2;memory_initialization_vector=fir加载滤波器系数所需的coe文件用:radix=10;coefdata=clear allN=14;%系数位数rcos_filter=rcosfir(0.35,7.5,4,1);%max_rcos_filter = max(rcos_filte原创 2021-04-29 17:40:10 · 2582 阅读 · 6 评论 -
modelsim单独仿真有ise ip的工程步骤
这里参考ise+modelsim联合仿真时自动生成的do文件do文件有.fdo后缀的功能仿真do文件,也有.tdo后缀的时序仿真do文件1.建库脚本输入:cd E:/hhhvlib work或者图形化界面:file->new->library2.编译文件vlog “fft_timesim.v”vlog “fft_tb.v”注意要把文件放入当前工作区目录(work的上一层,即E:/hhh里),或者图形化界面:compilefft_timesim.v网表文件里有这原创 2021-10-30 23:55:48 · 716 阅读 · 0 评论 -
一个移位寄存器的小栗子
module aaa(clk,clr,din,dout); input wire clk,clr,din; output reg [7:0] dout; always@(posedge clk) begin if(clr) dout <= 8'b0; else begin dout <= dout<<1; dout[0] <= din; end endendmodule 例子很简单,主要想总结两个语言语法问题:1.dout &l原创 2020-08-10 18:10:02 · 309 阅读 · 1 评论 -
论文《基于FPGA 的CFAR 设计与实现》复现
书接上回,老师让做czt后,再做一cfarcfar算法原理:。均值类CFAR 适用于空间上统计平稳的背景,它在检测单元前、后沿各有一个覆盖若干距离单元的滑动窗,利用滑动窗中参考采样的均值,形成前、后沿局部估计,再对局部估计平均、选大、选小或加权平均,以确定检测单元的背景杂波平均功率估计。 鉴于信号可能会跨越到前后邻近单元中,检测单元及其临近前后距离单元一般不包括在平均窗内,若检测单元中信号幅度大于滑动窗内均值的K 倍,则认为是信号。matlab仿真%% 程序初始化clc;clear all;cl原创 2022-02-19 11:16:47 · 3338 阅读 · 5 评论 -
Programming the EPCQ Device QUARTUS FPGA AS模式 加载程序 掉电加载
QUARTUS FPGA AS模式 加载程序1 Before Programming BeginsThe FPGA should be set to AS x4 mode i.e. MSEL[4…0] = “10010” to use the quad Flash as a FPGA configuration device.有些FPGA切换到AS模式是通过拨码开关切换的,详看FPGA datasheet.2 Convert .SOF File to .JIC FileChoose Conver原创 2020-08-18 15:43:49 · 1341 阅读 · 0 评论 -
关于always块中电平触发的问题
如下verilog描述中哪个或者哪几个会生成寄存器?A always@(clk)reg_a <= reg_b;B always@(negedge clk)reg_a<= reg_b;C always@(posedgeclk)reg_a<= reg_b;D assign reg_a =reg_b;解析:A选项中虽然也有clk,但是不是沿触发的,而是用always实现的组合逻辑。B、C毫无疑问,无论是上升沿触发还是下降沿触发都会产生寄存器,所以我们可以得出结论能不能生成寄存器的原创 2020-06-10 16:27:02 · 3960 阅读 · 1 评论 -
2021年校招提前批(vivo芯片设计岗)
一、单选题1、下图为组合逻辑Y=f(x1,x2,x3,x4)的真值表,请根据真值表选择Y的逻辑表达式为解析:用卡诺图化简逻辑函数时可按如下步骤进行:1)将函数化为最小项之和的形式。2)画出表示该逻辑函数的卡诺图。3)找出可以合并的最小项。4)选取化简后的乘积项。选取的原则是:①这些乘积项应包含函数式中所有的最小项(应覆盖卡诺图中所有的1)。②所用的乘积项数目最少。也就是可合并的最小项组成的矩形组数目最少。③每个乘积项包含的因子最少。也就是每个可合并的最小项矩形组中应包含尽量多的最小项。转载 2020-06-09 22:52:43 · 1576 阅读 · 0 评论 -
同步fifo设计
fifo的作用1.跨时钟域,用作速率匹配2.数据缓冲,例如fpga和dsp进行通信时,fpga8位输出,dsp16位输入,可用fifo进行数据缓存,达到数据位宽匹配的目的。一个最简单的fifo:输入输出共有六个,分别是写使能,写数据,写满,读使能,读数据,读空。读写使能都是由外部控制。读写逻辑当写使能,且没写满时,往fifo里写数据;同理,当读使能,且没读空时,读数据。读写指针逻辑读写指针都朝着一个方向变化,都只加,加到头,再循环回来从头加。当有写请求信号,且没写满时,写指针在clk驱动下自原创 2020-06-08 20:10:04 · 888 阅读 · 0 评论 -
HDL语言三种描述方式--结构化描述方式、数据流描述方式、行为级描述方式
当我们使用HDL代码在描述硬件功能时,主要有三种描述方式,即结构化描述方式、数据流描述方式、行为级描述方式。在平时编程时,可根据实际情况及个人喜好选择其中一种或者几种混合在一起进行自己的HDL代码编写。下面对三种描述方式进行介绍。1.结构化描述方式结构化描述方式时抽象级别最低的描述方式,但同时也是最接近于实际硬件的描述方式。采用结构化描述方式来编写HDL代码,其思路就跟在面包板上搭建数字电路是一样的。但结构化描述不常用,原因有二:1.使用结构化描述方式不宜描述功能复杂电路。因为我们大脑不仅要抽象出电原创 2020-05-31 15:26:00 · 6258 阅读 · 0 评论 -
verilog实现奇数分频--以三分频为例
工程文件module aa( input rst_n, input clk, output clko); reg [1:0] cnt; reg clk1,clk2; always@(posedge clk or negedge rst_n) if(!rst_n) cnt = 2'b0; else if(cnt == 2'b10) cnt = 2'b0; else cnt = cnt + 1; always@(posedge clk or negedg原创 2020-05-30 06:40:49 · 1113 阅读 · 0 评论 -
QUARTUS工具analysis&synthesis fitter assembler timequest timing analysis eda netlist writer的作用
一、分析综合Do you recognize that feeling when you think you knew something, until somebody asks you to explain it?Well, that was what happened to me when I tried to explain what “Analysis and Elaborati...原创 2020-05-08 11:24:34 · 6776 阅读 · 0 评论 -
FPGA 流水线等级 乘法器IP举例
1.乘法器ip配置optimum pipeline stages 最佳流水线等级2.所谓流水线处理,如同生产装配线一样,将操作执行工作量分成若干个时间上均衡的操作段,从流水线的起点连续地输入,流水线的各操作段以重叠方式执行。这使得操作执行速度只与流水线输入的速度有关,而与处理所需的时间无关。这样,在理想的流水操作状态下,其运行效率很高。利用流水线的设计方法,可大大提高系统的工作速度。这种...原创 2020-05-06 08:43:30 · 4478 阅读 · 0 评论 -
单口 RAM、伪双口 RAM、真双口 RAM、单口 ROM、双口 ROM 到底有什么区别呢?
转自:https://www.cnblogs.com/PG13/p/11592797.html 打开 IP Catalog,搜索 Block Memory Generator,即可看到其 Memory Type 可分为 5 中,分别是单口 RAM(Single Port RAM)、伪双口 RAM(Simple Dual Port RAM)、真双口 RAM(True...转载 2020-05-06 07:26:53 · 1537 阅读 · 0 评论 -
师兄毕设--双滑动窗能量检测算法实现突发信号检测
通过双滑动窗法检测接收信号中的突发报文段,其中两个相邻的窗口在相对于接收信号滑动的过程中是相对静止的,当两个窗都处于噪声段或者都处于信号加噪声段时,前后两个窗内的能量比值Sn相对平坦。当信号加噪声开始滑入前窗W1时,W1中的能量一直增加,而W2仍处于噪声段,此时Sn的值逐渐上升,直到突发信号的开始部分都包含在W1中而信号加噪声段即将进入W2时,两个窗内的能量比值Sn到达一个峰值。继续接收信号时,...原创 2020-05-05 21:41:41 · 4671 阅读 · 12 评论 -
关于数字化滤波器设计的一些问题
1.滤波器设计中具体频率的意义都是设计者赋予的。设计中使用的参数都是具体频率与采样频率的比值。例如符号速率1050bps,采样频率fs=4200hz,设计低通滤波器,过渡带1050~1050*1.2hz,通带阻带容限dev为0.1,采用kaiserord滤波器,设计滤波器系数。代码如下ps=1050;fc=[1*ps,ps*1.2];Fs=4200;mag=[1 0];dev=[0.01...原创 2020-05-04 10:08:57 · 1375 阅读 · 0 评论 -
FPGA设计中关于复位的问题
转自公众号:达尔闻https://mp.weixin.qq.com/s?__biz=Mzg5MDIwNjIwMA==&mid=2247486602&idx=1&sn=24b08ceaea977611f7ded99082de8f3b&chksm=cfe16e1df896e70b506da4bb1e6f93bfd961fb06aee2c860e003865cebd20...转载 2020-04-28 20:25:44 · 1813 阅读 · 0 评论 -
quartus写一个verilog的DDS 或叫做NCO,modelsim仿真
先上代码module Carrier_NCO( clock, reset, f_carrier_nco, //载波NCO频率控制字 cos_I, //余弦输出 sin_Q //正弦输出);parameter CARR_NCO_WIDTH = 8; //载波NCO累加位数input clock;input r...原创 2020-04-25 11:29:10 · 3647 阅读 · 1 评论 -
verilog 按键消抖
按键结果:按键一次,标志位置为1一次。问题:抖动方案:在按下阶段计时,当按下时间大于规定时间时,记为一次按键。一般情况下,我们从按下按键到松开基本需要大于几十毫秒的时间,系统时钟的周期处于纳秒级,因此我们按下一次按键会被大于十万个时钟的上升沿采集到,然而我们希望的是按下一次按键只被一次上升沿采集到,不然会被认为按了多次按键,所以我们需要对我们的按键进行处理。假设按键在没被按下时为高电平,被按...转载 2020-04-24 08:42:56 · 9886 阅读 · 3 评论 -
FPGA之状态机--基于D触发器的时序逻辑基本类型
Verilog HDL 的语句块都是并行执行的, 但是在很多情况下,我们希望执行按照顺序的方式进行,而状态机就可以很好的实现顺序执行。状态机组成要素:状态、初态、转移条件、输入符号集、输出符号集状态机工作要素:现态、次态(下一状态)、输入、输出有限状态机(Finite State Machine, FSM) 又简称为状态机, 是我们用Verilog HDL 描述数字电路的重要组成方式。状态机...原创 2020-04-20 19:54:26 · 2181 阅读 · 0 评论 -
flash 非易失
flash 非易失原创 2020-04-10 21:17:42 · 353 阅读 · 0 评论 -
关于quartus ii / ise / vivado 联合 modelsim 仿真的一些问题
一.quartus联合modelsim1.编译仿真库。报错就报错吧。可不用管。2.将编译好的仿真库中的modelsim.ini文件中的图中内容复制到modeltech64_10.4路径下的modelsim,ini对应部分。这一步的作用是在Modelsim SE中映射相应的器件库。不要忘记更改modeltech64_10.4路径下的modelsim,ini的只读属性,改完后再改过来。把以上...原创 2020-04-18 21:47:01 · 1351 阅读 · 0 评论 -
关于initial是否可以综合的问题
1.在quartus或者ise中用下面这种简单的initial初始化,是不会报错的。module a(out);output reg out;initial begin out = 1'b1;endendmodule2.但是在initial块中给wire赋值是会报错的module a(out);output wire out;initial begin out = 1'b...原创 2020-04-15 09:49:46 · 6725 阅读 · 2 评论 -
总线
SPI是一种总线协议。总线,一个主设配(FPGA)只用三四个引脚和n个从设备进行通信。例如FPGA通过SPI配置SI4133频综模块。原创 2020-04-08 22:02:47 · 290 阅读 · 0 评论 -
FPGA内部硬件资源介绍
FPGA内部有很多可供用户任意配置的资源,其中包括:可编程逻辑、可编程I/O、互连线、IP核等。FPGA(型号EP2C70F672C8)芯片模型如下资源未使用时:资源使用后(quartus ii 工程全编译compilation后)(1)首先,第一个资源,逻辑阵列块(Logic Array Block,LAB):每个LAB由16个逻辑单元LE(Logic Element)组成。一个逻辑...转载 2020-04-03 11:18:55 · 6415 阅读 · 0 评论 -
AD采样&DA回放
不知从何说起,先放代码module ADSample_Interface( DSP39MHz, //39M外部时钟输入 ADC_CLOCK, //AD采样驱动时钟输出 ADC1_CLK, //ADC1采样同步时钟输入111没用到 ADC2_CLK, //ADC2采样同步时钟输入111没用到 ADC1_D, //ADC1采样数据输入 ADC2_D, //ADC2...原创 2020-03-31 20:51:05 · 1229 阅读 · 0 评论 -
关于数字下变频的一点思考
问题一:接收信号初相不知道,有这个初相怎么还能实现下变频?设含有初相的接收信号s=cos(wit+ϕ){\rm{s}} = \cos ({w_i}t + \phi )s=cos(wit+ϕ),本地生成信号为slocal=cos(wct){{\rm{s}}_{local}} = \cos ({w_c}t)slocal=cos(wct),一般取个两倍下变频为二者相乘再取低通,为s0=c...原创 2020-03-31 19:41:31 · 977 阅读 · 0 评论 -
阻塞赋值与非阻塞赋值
1 阻塞赋值:语句顺序执行,不能同时进行,称之为阻塞,用于组合逻辑阻塞赋值使用的赋值运算符为“=”。阻塞赋值的过程是立刻执行的,即阻塞赋值运算符右侧表达式求值完后立刻会更新至运算符左侧,并且这个执行的过程不受其他语句执行的影响,其后的语句只有当前的赋值操作执行完成后才能顺序执行。2.非阻塞赋值:语句按节拍同时并发执行,用于时序逻辑...原创 2020-02-19 10:19:53 · 738 阅读 · 0 评论 -
FPGA配置方式、启动过程
AS模式:主动模式烧到FPGA的配置芯片里保存的,FPGA器件每次上电时,作为控制器从配置器件EPCS(Erasable programmable configurable serial串行存储器)主动发出读取数据信号,从而把EPCS的数据读入FPGA中,实现对FPGA的编程,该方法适用于不需要经常升级的场合;PS模式:被动模式EPCS作为控制器件,把FPGA当做存储器,把数据写人到FPGA...转载 2020-02-18 19:12:11 · 6890 阅读 · 0 评论