- 博客(29)
- 资源 (112)
- 收藏
- 关注
原创 quartus中与modelsim进行联合仿真出现错误error:(vopt-13130)failed to find design unit****
在使用modelsim进行仿真中经常出现一些未知的错误,有些错误可能只是一些简单的一个空格,一个字符就会让人摸不到头脑。就拿我自己举例子,经常会遇到如标题类似的错误如下图1出现错误的原因百分之八十是名称的错误,就拿我这个例子来说,显示找不到这个模块,我当时还很困惑,首先就根据出现这个名字的几个地方去找1.找编写的测试代码,文件刚开始的名称是否出错,如下图2所示可以看出这个地方与仿真出错的地方名称不一致,我要编写的名称为tb_uart_sdram但是modelsim中提示的错误时找不到tb_uart_
2021-04-24 20:14:13 8317 2
原创 FPGA与ASIC及SOC的区别?ARM是什么
1、ASICASIC即专用集成电路,是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。 目前用CPLD(复杂可编程逻辑器件)和 FPGA(现场可编程逻辑门阵列)来进行ASIC设计是最为流行的方式之一,它们的共性是都具有用户现场可编程特性,都支持边界扫描技术,但两者在集成度、速度以及编程方式上具有各自的特点.目前,在集成电路界ASIC被认为是一种为专门目的而设计的集成电路。是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。ASIC的特点是面向特定用户的需求,ASIC在批量生产时与通
2021-03-24 16:11:55 7445
原创 verilog中的位拼接移位实现串行数据转并行数据
假如reg是一个串行不断输入的1bit数据,当其传输8位后停止传输,假设其8次输入的数据为1111 1111,而rx_data本来的数据为8位的0000 0000always@(posedge sys_clk or negedge sys_rst_n) if(sys_rst_n == 1'b0) rx_data <= 8'b0; else if (条件) rx_data <= { reg, rx_data[7:1] };首先,满足条件下,reg的第一个数据为1,则{ 1,00
2021-03-22 08:30:52 3683
原创 2021.1.22ROM IP核(二)调用与仿真
一、验证如何验证ROM IP核是否正常工作,首先满足两个要求。第一:每个地址都对应一个数据第二:能够根据clk产生随机数据地址,同时能够将对应地址中的内容提取出来1、实验目标(1)以生成的mif文件为例子,从地址0——255将其每个地址中间的内容读取出来,并将读取的数据在数码管上显示出来,将每个数据显示的时间定为200ms。再将数据与我们的mif文件进行对比观察数据的正确性(2)验证随机变量的正确性,引入两个变量即两个按键k1、k2,当k1按下的时候给rom提供一个随机但是有效的地址A1,然后将
2021-02-14 10:30:30 560
原创 2021.1.21 ROM IP核(一)简介与配置
一、IP核简介ROM是只读存储器(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除,且资料不会因为电源关闭而消失。用IP核生成的ROM、RAM都存在于FPGA内部的RAM中,掉电都会丢失。而用IP核生成的ROM只是提前添加了数据文件。在FPGA运行的时候,通过添加数据文件给ROM进行初始化,才使得IP核生成的ROM模块像一个非遗失性储存器,那么添加的文件是有软件产生的两种格式分别是.hex与.mif文件,其中.mif文件
2021-02-14 10:25:40 1464
原创 2021.1.20 PLL-IP核(二)调用与仿真
一、程序编写在工程里面找到实例化后的ip文件,打开之后修改参数即可直接使用程序如下module pll( input wire sys_clk , //系统时钟50Mhz output wire clk_mul_2 , //系统时钟经过2倍频后的时钟 output wire clk_div_2 , //系统时钟经过2分频后的时钟 output wire clk_phase_90, //系统时钟经过
2021-02-01 22:36:21 356
原创 21 PLL-IP核(一)简介与配置
一、IP核简介PLL锁相环FIFORAMROMaltera公司使用的是模拟锁相环,相比于数字锁相环,其输出的信号稳定度高、相位连续可调、延时连续可调。缺点是当温度过高或者电磁辐射过强的时候会失锁锁相环是一个反馈系统PLL(Phase Locked Loop,即锁相环)是最常用的IP核之一,其性能强大,可以对输入到FPGA的时钟信号进行任意分频、倍频、相位调整、占空比调整,从而输出一个期望时钟。1、PLL的基本工作原理鉴频鉴相器:主要比较参考时钟与比较时钟的频率核相位的差异环路滤波器:用
2021-02-01 22:31:33 1104
原创 20IP核
一、IP核1、IP核是什么IP(Intellectual Property)即知识产权。在半导体产业将IP核定义为“用于ASIC或FPGA中的预先设计好的电路功能模块”。简而言之,这里的IP即电路功能模块。在数字电路中,将常用的且比较复杂的功能模块设计成参数可修改的模块,让其他用户可以直接调用这些模块,这就是IP核。2、为什么要用IP核随着FPGA的规模越来越大,它的设计也是越来越复杂。IC集成度以每年55%的速度上升,而人们开发的速度每年只提升20%。随着设计规模增大,复杂度提高,使用 IP 核
2021-01-29 21:01:10 311
原创 19 数码管动态显示 三 ( 动态显示驱动)
一、设计思路假设要显示的-987.6则要显示的个、十、百、千、万、十万分别为6、7、8、9其中万和十万为0;需要注意的是,bcd_8421模块完成二进制到bcd编码所用的时间在21个周期,所以需要一段时间的延迟。data_reg[23:0]用作变量的寄存,但是只是对符号位和数据位进行寄存,不包含小数点位二、实现1.visio波形图分析2.程序module seg_dynamic( input wire sys_clk , //系统时钟,频率50
2021-01-29 14:50:37 929
原创 18 数码管动态显示二 (二进制转bcd码)
一、动态显示驱动模块将二进制码转换为bcd码输入的是data_gen产生的数据,输出的是要显示的个十百千万十万,共六个数码管的数据。bcd_8421主要是将data_gen产生的二进制数据转化为bcd码,这样便于显示,其转换如下所示。最后移位的次数和原二进制的数据的位数有关,例如图中的输入的二进制码为8位,则最后的移位次数也为8。二、实现波形图程序module bcd_8421( input wire sys_clk , //系统时钟,频
2021-01-27 11:20:43 2490 2
原创 17数码管动态显示一(数据生成模块)
一、数码管动态显示用动态扫描的显示方式实现数码管的动态显示(利用人眼的视觉暂留以及数码管的余晖效应)二、数码管动态显示实现1、实验目标0~999999循环计数,每个计数的间隔为0.1s2、visio视图(1)总体视图根据视图可以看出,数码管的动态显示主要由三部分(2)模块的作用top_seg_595是总模块,输入2路信号,输出4路信号 输出的信号接到595芯片上面data_gen主要用于产生要显示的数据,data[ n: 0] 可以对此模块进行扩展,从而使其输出小数点、符号位以及
2021-01-25 15:24:18 947
原创 74hc595芯片介绍
MR:复位端,对数据进行清零,不接到控制芯片上面,直接接到vcc上,避免对数据清零DS:将串行数据传送到移位寄存器中SHCP:移位寄存器的时钟输入端,在上升沿时将输入的数据移入到移位寄存器中间,先进来的数据在最后面,最多输入8bit数据,如果超过8bit,比如14位,那么最前面输入的6位数据会通过Q7S端口输出,Q7S会与下一个74HC595芯片的DS相连接STCP:存储寄存器时钟,控制8位的存储器,在上升沿时,将移位寄存器中的数据写入到8位存储器中。OE:使能信号,低电平有效,当使能信号有效时,会
2021-01-23 13:59:36 946
原创 16数码管静态显示(74hc_595)
一、数码管静态显示1、数码管数码管是一种半导体发光器件,其基本单元是发光二极管。待显示内容 段码(二进制格式) 段码(十六进制格式)6位8段数码管2、74HC59574HC595是一个8位串行输入、并行输出的位移缓存器。其内部具有8位移位寄存器和一个存储器,具有三态输出功能。输入方式:seg[0]…seg[7] sel[7]…sel[0]端口作用连接到FPGA上的端口有4个,分别是DS、SHCP、STCP、OEMR:复位端,对数据进行清零,不接到FPGA芯片上面,直接接到vcc上
2021-01-23 13:19:23 3004
原创 15无源蜂鸣器
一、蜂鸣器1、什么是蜂鸣器蜂鸣器按其结构可分为电磁式蜂鸣器和压电式蜂鸣器两种类型;蜂鸣器按其是否带有信号源又分为有源蜂鸣器和无源蜂鸣器。有源蜂鸣器的内部装有集成电路,不需要音频驱动电路,只需要接通直流电源就能直接发出声响;而无源蜂鸣器只有外加音频驱动信号才能发出声响。2、无源蜂鸣器原理无源蜂鸣器与有源蜂鸣器不同,因其内部不带震荡源,所以其无法像有源蜂鸣器那样直接用直流信号驱动,这里需要使用PWM方波才能驱动其发声。输入不同频率和占空比的PWM方波发出的声音是不同的,其中频率对音调有影响,占空比对
2021-01-19 21:53:48 2089
原创 14复杂状态机
一、实现的功能实现可乐机能够投入5毛和1块的硬币2.5元吐出可乐3元的时候吐出可乐并且进行找零二、实现1、状态图2、波形图3、rtl视图4.程序模块程序module complex_fsm( input wire sys_clk, input wire sys_rst_n, input wire pi_money_one, input wire pi_money_half, output
2021-01-16 22:29:56 540 2
原创 13简单状态机
一、状态机1.定义状态机简写为FSM(Finite State Machine),也称为同步有限状态机,我们一般简称为状态机分类:Moore型状态机、Mealy型状态机同步:是指再时钟的作用下进行的有限:是指表示状态的个数有限Moore型状态机、Mealy型状态机 的区别:相同点:状态的跳转都只和输入有关不同点:在输出的时侯,若最后的输出都只和当前状态有关而与输入无关为Moore型状态机,若最后的输出与输入有关为Mealy型状态机。2.编码方式(1)独热码每个状态只有一个为高电平,其余的
2021-01-15 20:36:35 429
原创 12 FPGA pwm呼吸灯
一、呼吸灯能够产生呼吸灯有两种方式,第一种是通过调节电压的改变从而达到改变led灯的亮度,使其产生呼吸灯的效果,第二种是采取pwm波的形式,通过改变亮灭的占空比从而产生呼吸灯的效果。在fpga中改变电压控制led不太现实,所以就目前的学习程度来说还是采用pwm的形式。二、实现1.波形(1)从亮到灭由于板子上面的led是低电平点亮,所以此波形图主要是从亮慢慢变灭。但是另外一种情况由灭到亮也是通过led_out来输出,因此需要一个标志位cnt_led_en的低电平表示从亮到灭的过程,这个过程持续一
2021-01-13 22:02:23 1056
原创 11FPGA流水灯
一、波形图要实现流水灯,首先需要一个计数器,我们实现的是0.5s亮,然后0.5s灭的流水灯,所以根据50mhz的晶振可以计算出,0.5s最大计数值为24999999,所以cnt的值为0~24999999,是一个25位宽的数值。设置一个标志信号来控制输出led,我们采取的是左移实现循环,但是左移会出现全为低电平的情况,因此设置一个led_out_reg对其进行左移然后取反,即可得到我们需要的结果。二、实现1.程序module water_led#(parameter CNT_MAX = 25’d
2021-01-12 21:06:00 623
原创 10FPGA触摸按键控制LED
一、触摸按键触摸按键可分为四大类:电阻式、电容式、红外感应式、和表面声波式。电容式触摸按键主要由按键IC部分和电容部分构成;按键IC用于将电容的变化转换为电信号;电容部分指的是由电容极板、地、隔离区等组成触摸按键的电容环境。二、上升沿与下降沿的采集电容按键被按下的时候,我们需要采集它的一个上升沿或者下降沿,这里所用到的采集上升沿和下降沿的方法同样也可用于以后其他的例子中,要熟记这种采集上升沿和下降沿的方法1.使用组合电路实现(assign)其实现方式如下,由于组合逻辑没有延时,所以最后的to
2021-01-12 15:03:43 252
原创 9FPGA按键消抖
一、按键按键消抖主要针对的是机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了保证系统能正确识别按键的开关,就必须对按键的抖动进行处理,这就是按键消抖。消抖方式主要有两种①硬件消抖:RS触发器(适用于按键个数比较少时)②软件消抖:verilog语言编写(适用于按键个数比较多的时候)在按键抖动时,可以分为前抖动和后抖动,其中前抖动和后抖动时间大概5ms—10ms左右,而中
2021-01-11 21:03:54 405
原创 8奇分频器——五分频器
一、分频器实现偶分频方式方式一:在分频之后的时钟产生的(分频)方式二:在系统信号中产生的(降频)其区别如下,实现的条件一个是在分频之后为条件,另外一个是在系统时钟下产生的,我们建议使用第二种方式二、实现1.方式一分频器波形图由于奇数分频器的特殊性,没有办法采取偶数分频器的方法,所以采取使其产生两个clk1与clk2,然后让其两个相与得到最终的五分频clk_out,波形图如下图所示2.程序module divider_five(input wire sys_clk
2021-01-10 22:22:38 2412 2
原创 7偶分频——六分频器
一、分频器1.定义分频器是数字系统设计中最常见的基本电路之一。所谓“分频”,就是把输入信号的频率变成成倍数地低于输入频率的输出信号。分频器分为偶数分频器和奇数分频器,和计数器非常类似,有时候甚至可以说就是一个东西。2.实现分频想得到比固定时钟频率更慢的时钟,可以将固定时钟进行分频想得到比固定时钟频率更快的时钟,可以将固定时钟进行倍频又两种方式实现分频与倍频①锁相环pll②自己编写verilog语言来实现3.奇偶分频偶分频:成倍数低于输入频率的输出信号有2、4、6、8分频奇分频:成倍数
2021-01-10 20:54:07 4164
原创 6 计数器
一、计数器概念计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能, 同时兼有分频功能。计数器在数字系统中应用广泛,如电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。二、计数器计时计算计数器计时主要与时钟频率有比较大的关系要实现1s的计数,用50Mhz的晶振来实现,其计算过程如下所示f=50Mhz=510四次方KH
2021-01-10 15:50:58 1069
原创 5时序逻辑之寄存器,阻塞赋值与非阻塞赋值的区别
一、时序逻辑:寄存器1.组合逻辑中的竞争冒险竞争(Competition): 在组合逻辑电路中,某个输入变量通过两条或两条以上的途径传到输出端,由于每条途径延迟时间不同,到达输出门的时间就有先有后,这种现象称为竞争。把不会产生错误输出的竞争的现象称为非临界竞争。把产生暂时性的或永久性错误输出的竞争现象称为临界竞争。冒险(risk):信号在器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要
2021-01-03 19:18:53 2433
原创 4层次化设计之全加器与避免latch产生
注:仅作为记录自己日常学习进度,如有错误还请批评指正一、全加器经过前面的学习能对整个编程思路有个大概的了解,但是之前介绍的只是一些简单的器件,用一个模块就能表达清楚,当面对复杂的模块时还用这种方法就比较麻烦了,所以就需要层次化设计1.层次化设计(1)自底向上Bottom_top(2)自顶向下Top_Bottom2.全加器全加器定义全加器与半加器不同的地方时输入有3路,比半加器多一路输入信号3.过程(1)visio模型绘制从绘制的模型可以看出,全加器与半加器的区别,全加器时由两个半加器模
2021-01-03 18:39:18 683
原创 3译码器与半加器的学习
一、译码器的学习译码器定义:简单来说就是将输入的二进制代码状态翻译成输出信号,以此来表示原来的含义的电路。译码器可以分为两大类(1)变量译码输入n个则最多输出为2的n次方个,比如38译码器,输入为2,则输出最多为2的3次方,即为8(2)显示译码将对应的二进制代码转换为7段码,一般用于驱动led或者lcd1.其过程和之前的类似,先建立四个文件夹,然后绘制visio波形,编写代码等过程不在赘述,参考前面代码可以用if-else语句来实现也可以用case语句来实现,两者区别比较大,第一种生成的rt
2021-01-01 20:02:40 1279
原创 2简单的例程学习选择器
记录自己寒假学习进程,仅供参考,不作为教程。欢迎大家提出批评这次主要学习的是数据选择器,从最简单的二选一数字选择器开始,主要是熟悉一下大致的流程,练习一下verilog语法结构1.第一步呢首先就是分析一下数据选择器的功能,要是实现什么样的效果,对二选一数字选择器有一个大致的思路,还是从上一次的步骤开始。首先建立一个文件夹文价夹命名为mxu2_1,在此文件夹下面建立四个文件夹,分别命名为dox、quartus_prj、rtl和sim。它们分别对应的作用是(1)doc 主要放置一些此工程用到的一些
2021-01-01 19:15:32 572
原创 1初识fpga
仅作为记录寒假自己在家学习进程,如果有错误还请提出批评一 FPGA环境的搭建1.主要用到软件(1)quartus ii 13.0 主要用于程序的编辑下载等,但是只是针对Altera公司的fpga(现在已经被intel收购)对于Xilinx(赛灵思)使用的软件是vivado/ISE(vivado晚于ISE,具体区别可自行查找)(2)Modelsim SE10.5 仿真软件的安装,主要是用于对程序的仿真波形的观察,可与quartus进行联合仿真(3)visio绘图软件安装,主要是可以在写仿真程
2021-01-01 19:04:18 333
原创 Modelsim安装教程以及管理员身份运行patch_dll.bat时找不到文件mgls.dll的解决
Modesim安装教程Modesim版本有很多,但是安装方式大都相同,我们以modesim.10.5为例,电脑使用的是win10 64位,讲一下安装过程中的步骤以及出现问题的解决方法一 安装1.首先解压安装包,在解压的安装包内选择应用程序,右键选择管理员运行。2.稍等一会,有的电脑会弹出是否允许modesim进行更改,选择 是 即可,然后出现下面的界面,点击下一步。3.弹出此界面选择安装路径,选择安装路径,我是在D盘新建的文件夹,直接把文件夹中的路径复制在框内。文件夹名称切记不要带中文4.
2020-12-29 14:51:10 10854 15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人