- 博客(49)
- 收藏
- 关注
原创 FIFO读写控制
创建两个模块,一个 作为发送模块,一个作为接受模块,发送模块检测到 fifo为空开始向fifo写数据直到fifo写满为止,数据接受模块检测到fifo满,则从fifo中读出数据,直到fifo读空为止
2022-06-27 20:43:25
1205
原创 仿真基本函数用法
$display 打印信息自动换行eg:$display("%b+%b=%d",a,b,c);%h或%H以16进制输出%d或%D以10进制输出%o或%O以8进制输出initial begin $display("hello"); $display("hi"); a=4'd5; b=4'd6; #100; $display("%b+%b=%d",a,b,c);end这段代码输出he...
2022-02-15 09:42:44
232
原创 计数器设计
设计架构设计一个计数器每隔0.5秒使得LED反转一次,一个周期需要1秒,fpga时钟是f=50MHZ,fpga周期为t=1/f=20ns。 所以LED反转一次一个周期需要计数m=1s/20ns-1=49 999 999次,led从亮到灭或者从灭到亮半个周期需要计数cnt=m/2-1=24 999 999。 在这里科研设计一个标志信号,每次计数到cnt-1=m/2-2的时候,产生一个周期高电平标志信号cnt_flag, 当cnt_flag为高电平的时候,下一个周期led取反即...
2022-02-15 09:01:25
1212
原创 半加器设计
设计架构代码编写 module half_addr( input in_1, input in_2, output sum, output count ); assign {count,sum}=in_1+in_2; endmodule
2022-02-13 16:22:16
369
原创 多路选择器
设计架构波形图绘制代码编写module yimaqi( input in_1, input in_2, input in_3, output reg [7:0] out);/*always @(*) if({in_1,in_2,in_3}==3'b000) out=8'b0000_0000; else if({in_1,in_2,in_3}==3'b001) out=8'b0000_0001; else if({in_1,in_2,in_3}==3'
2022-02-13 16:17:13
266
原创 FPGA简介
1.FPGA基础知识FPGA即现场可编程门阵列,,它是作为专用集成电路领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克服 了原有可编程器件门电路数量有限的缺点。主要由6部分构成,可编程输入/输出单元,基本可编程逻辑单元,嵌入式块ram,丰富的布线资源,底层嵌入功能单元和内嵌专用硬核等。2.学习fpga的意义在这种CPU架构体系体系的设计中(51系列单片机,ARM,DSP)大部分应用工程师是在相对固定的硬件系统上从事开发,可编程的是软件,但现在有了FPGA代表硬件的编程。这两部分都
2020-09-16 10:15:12
2688
原创 verilog基础语法
顺序块:块中的语句按从前到后一条接一条执行 begin . . . end并行块:块中的语句同时开始执行 fork . . . joinrepeat循环:一个存储器的初始化也可以用repeatreg [7:0] mem [3:0];initial begin i=0; repeat(4) begin mem[i]=0; i=i+1;
2020-08-10 12:19:55
735
原创 TFT显示图像
项目名称TFT显示图像具体要求在tft液晶屏上显示一幅图像设计说明这个项目笔者做了两天,其实不是很难,但是因为缺乏经验,具体的原因是bmp转mif文件的软件是有问题的,笔者一直用这个软件转的mif文件,导致图像一直倾斜,一直没有发现是软件的问题,这个软件在转4:3标准分辨率的mif文件是好的,但是涉及到其他分辨率就会出现图像数据与像素比不对应。涉及架构如下,将图片数据存储在rom中,在tft屏幕上显示,图片分辨率大小为160*120代码设计先创建生成9M时钟和rom的i.
2020-08-09 11:05:11
2932
1
原创 verilog传参
参数传递的三种办法1.参数传递方法1module trans#(parameter para1=50,para2=80)( input clk, input rst_n); . . .endmodule//例化传参 . . .trans trans#(.para1(20),.para2(30))( . clk(clk), . rst_n(rst_n)); . . .2.参数传递方法2module tran.
2020-08-08 14:28:40
2700
原创 SDRAM控制器仿真
项目名称SDRAM控制器仿真项目说明仿真代码,进行例化,sdram_clk=~clk主要是要在sdram时钟的上升沿进行采样数据,数据中心在时钟上升沿`timescale 1ns/1ns`define clk_period 10module sdram_ctrl_tb;`include "params.h" reg clk; reg rst_n; reg wr;//写使能 reg rd;//读使能 reg[`ASIZE-1:0]caddr;//
2020-07-27 10:19:24
497
原创 SDRAM控制器设计
项目名称SDRAM控制器设计具体要求给sdram存入100个数据并读出设计说明 模块设计 端口设计及端口说明并包含参数文件module sdram_ctrl ( clk, rst_n, wr, rd, caddr, raddr, baddr, wr_data, rd_data, rd_data_vaild, wr_data_vaild, wdata_done, rdata_...
2020-07-26 22:31:55
346
原创 SDRAM初始化过程
项目名称SDRAM初始化具体要求对sdram进行初始化设计,并仿真验证设计说明SDRAM即同步动态随机存储器,同步是指SDRAM时钟频率与控制器的时钟频率相同,动态是指存储阵列需要不断的刷新来保证数据不丢失,随机是指数据的读取和写入可以随机指定地址。SDRAM存储数据是 利用电容能够保持电荷以及其充放电特性,对于一位数据的存取,首先需要打开行地址,然后打开列地址,电容的电平状态就可以呈现在数据线上。打开行地址需要一定的时间,经过tRCD时间才可以打开列地址,打开列地址同样需要经过列选
2020-07-25 23:37:23
858
原创 HT6221红外遥控解码设计
项目名称HT6221红外遥控解码设计具体要求接收红外按键的数据在ISSP上观察设计说明下图为红外遥控器及按键图。红外接收头有三个引脚,电源、地和信号输出。 HT6221芯片的红外遥控发送数据帧定义,一帧数据由引导码、地址码、数据码及数据反码组成。地址码共16位,低位在前,高位在后,8位数据码及其反码也是低位在前,高位在后。 HT6221芯片是一款基于NEC红外通信协议的遥控编码芯片...
2020-07-25 00:20:03
2263
1
原创 Signal Tap ii逻辑分析仪的使用
项目名称Signal Tap ii逻辑分析仪的使用具体要求生成三角波并在Signal Tap ii中进行观察设计说明1.三角波的生成采用sin3e工具生成三角波的mif文件,B是定义的数据位宽,Base是数据格式,采用16位数据格式,回车键就可以生成mif文件。 2.生成rom ip核, 数据位宽选择8位,深度选择256,选择生成的mif文件,一般将mif文件放在工程文件夹下。 ...
2020-07-23 23:39:31
1274
1
原创 串口收发之ram存取
项目名称串口收发之ram存取具体要求串口发送5个数据到FPGA,通过双端口ram将数据缓存,每按下一个按键,上位机接收一个数据,按下按键5次接收5位数据完毕设计说明下图为设计框架,除了ram_ctrl模块,剩下的模块在前面都介绍过,将前设计的模块进行调用总体比较简单。这里将前面设计的串口发送模块重新设计一下,根据以下的时序图可以很轻松设计出串口发送模块。需要注意的是笔者在进行ram控制模块设计的时候遇到了一个问题,在进行读地址的时候,如果按以下的方式进行设计,也是没有..
2020-07-23 17:25:47
1664
3
原创 UART收发整合
项目名称UART收发整合项目要求上位机将数据发送出去,fpga接收到数据之后发送给上位机项目说明这个小项目就是将接收器和发送器进行整合成一个简易的串口模块,下面是模块框图,比较简单。 代码设计顶层模块module uart_top( input clk, input rst_n, input rs232_data, output rs232_tx//发送的数据 );wire [7:0] data;...
2020-07-19 14:55:39
242
原创 UART发送模块设计
项目名称UART发送模块设计具体要求按下四个独立按键,在上位机上可以接收到按键的数据项目说明经过了接收模块设计,这个模块就比较简单了。直接进行设计。tx_flag_start:开始接收发送标志tx_data:需要发送的数据tx_data_r:发送的数据进行寄存tx_flag:发送数据标志bps_cnt:波特率计数bit_flag:发送数据位数标志data_cnt:发送数据位数计数rs232_tx:数据线上的数据 ...
2020-07-19 14:28:26
426
原创 UART接收模块设计与验证
项目名称UART接收模块设计与验证项目要求利用串口助手向fpga发送数据用来点亮led项目说明rs232协议示意图如下,当PC未给FPGA通过串口发送数据的时候,串口处于空闲状态(高电平),当PC端需要开始发送数据时,需要给一个起始位,然后就是发送一个字节的数据,从低位到高位依次发送,数据线从高电平转为低电平代表一个起始位。发送一帧数据之后校验位,在本项目中未使用。这个项目比较简单,就直接开始进行设计,串口的波特率为9600bit/s,就是每秒传送9600位,每一位需要传送的时.
2020-07-18 18:57:38
1871
原创 issp调试数码管显示
项目名称数码管显示具体要求对数码管驱动电路进行设计,并利用In system sources and probes editor(ISSP)输入显示的数据,在数码管上正常显示设计说明本设计采用的是8位8段的数码管(8位代表8个数码管),每个数码管的结构图如下,下图为共阳极数码管,共阴极与共阳极数码管的的区别在于,公共端是接到高电平还是低电平。数码管的那个段需要点亮时,只需要给所对应的段给低电平例如如果要显示数字0,只需将a、b、c、d、e、f置0,其他段置1即可。 ...
2020-07-06 12:19:48
1169
原创 按键消抖设计
项目名称按键消抖设计具体要求独立按键消抖并控制4个led二进制增加显示设计说明按键分类比较多,这里主要以普通按键为例进行设计,按键未按下时IO口为高电平,按下时为低电平,当按下或者松开的时候会产生额外的物理抖动。产生抖动的次数与间隔是不确定的,一般情况下单次抖动的总时间会在20ms之内。一般用软件实现按键消抖,在消抖之前先消除亚稳态,因为按键对FPGA来说是外部信号,先对按键信号进行同步处理,对按键信号寄存两次进行输出,同步到fpga时钟上。设计一个20ms的计数器,对按键消抖进
2020-07-04 22:27:11
2149
原创 级联BCD计数器
项目名称级联BCD计数器具体要求设计三级bcd计数器,可以计数到999设计说明BCD码是用四位二进制数表示十进制中的0-9这10个数字,最常见的是8421码,各个位的权值分别为8、4、2、1,同样还有5421码等,例如将321转化为BCD码为0011_0010_0001。详细请参考百度。 3 2 1 0 0 1 1 0 0 1 0 ...
2020-07-04 15:09:51
5176
原创 fpga蜂鸣器实现音乐播放器
项目名称音乐播放器具体要求用蜂鸣器实现两只老虎的音乐播放,数字音符1231 1231 345 345 565431 565431 151 151代码设计`include "state.v"module beep( input clk, input rst_n, output reg beep);//250ms跳转一次,需要计数12500000localparam state_top=24'd12500000-1;reg [23:0] state_cnt;al
2020-07-04 10:00:39
7272
9
原创 基于FPGA的lcd1602液晶显示
项目名称基于FPGA的lcd1602液晶显示具体要求第一行显示今天的日期2020-07-01日,第二行显示笔者最终做完的具体时间吧设计说明笔者采用的是50mm*30mm的mini型lcd1602,体积小,可以同时显示16*2,即32个字符(16列*2行)。lcd1602主要有两个操作,即读操作和写操作,一般不会用到读操作,要注意lcd的驱动频率,不然由于fpga写入速度快,会让lcd无法响应,lcd的驱动模式采用8bit模式,设计简单,操作方便。lcd初始化如下 ...
2020-07-01 23:00:41
3482
4
原创 基于rom的VGA图像显示
项目名称基于rom或ram的VGA图像显示设计要求将图像存储在rom或ram中分别显示设计说明 如果实现640*480的彩色图像显示需要的存储资源为640*480*24=7372800bit,而EP4CE15F17C8N的ram存储资源只有516096bit,根本无法显示一张真彩色图像。一般在做图像处理时都使用的外部的存储资源,如sdram等,本项目先不考虑这些,采用rgb332标准所占用的存储资源为640*480*8=2457600也超过了M9K,但是这种标准下的图像只有种颜色类型,.
2020-07-01 13:07:38
655
原创 VGA字符显示
项目名称vga字符显示具体要求显示VGA字符显示设计架构 设计说明锁相环生成提供给VGA驱动显示和rom的25M时钟,首先需要取模软件将字符转换成16进制数组文件,可以直接通过像素的对应,在显示器的固定地址进行输出。笔者采用PC2LCD2002字模提取软件,这种软件比较多,网上随便下一个。注意笔者直接打开之后提取自模失败,不知道是啥原因,但是用管理员模式打开可以提取,尽量用管理员模式打开吧,反正也不是病毒软件。需要注意的是...
2020-06-30 19:29:09
976
2
原创 FPGA代码固化
说明由于笔者在学习fpga的过程中,一直都是下载配置代码,比较方便,很少用到固化。长时间不用就不太熟悉,所以专门说一下固化方法。在对MCU进行烧写程序,程序固件被写入MCU的片上存储器ROM中,并且现代大部分MCU的片上存储器ROM为FLASH存储器,可以实现掉电保持数据,所以可以掉电程序不丢失。而对于FPGA芯片而言,FPGA芯片是基于SRAM的查找表(LUT),所以当将.sof下载到FPGA芯片上,这些数据直接存储在SRAM的查找表中,一旦掉电即会丢失数据。一般在FPGA芯片外部放置一片能够掉电不丢
2020-06-30 12:05:18
1214
原创 带动画的矩形显示
项目名称带动画的矩形显示具体要求分为5个状态,状态1显示红蓝绿三个区域,状态2显示蓝绿,状态3显示绿,状态4显示蓝绿,状态5显示红蓝绿。设计说明 根据vgs显示时序图计算出需要显示区域的临界点,红色和绿色为100*100和200*200的像素。640*480分辨率下的行场扫描刷新时序表 分辨率 时钟(mhz) 行时序(像素) 场时序(像素) a b c d e a b c d e 640*480@6..
2020-06-30 11:35:43
215
原创 显示缩放的圆域
项目名称显示缩放的圆域具体要求显示一个逐渐放大然后再逐渐缩小的圆域项目说明及代码设计这个项目其实也比较简单,但是笔者花费了一个下午的时间,实践出真知,在上个工程彩色环显示的基础上进行改进。首先要计算圆域放大和缩小的时间,圆域的放大可以看成半径从零到最大的过程,根据圆的标准方程公式 可以得到圆域面积 ...
2020-06-28 20:41:04
462
原创 彩色环显示
项目名称彩色环显示具体要求先显示圆,半径为100,然后在圆外面有圆环,依次形成彩色环设计说明 设计架构 与VGA驱动显示相同,不再多说,先将显示区域左上角像素点同步到以(0,0)坐标为起点,确定圆的半径、及中心坐标(320,240),将圆显示区里面的像素点看成是变量(v_x,v_y)。 根据公式计算出显示区域(v_x-320)^2+(v_y-240)^2<=半径,就可以进行显示。 代...
2020-06-28 10:40:35
311
原创 颜色循环显示动画
项目名称颜色循环显示动画设计要求每隔0.5s显示一幅图,每幅图由各种颜色构成,进行循环显示设计说明 本次设计在vga驱动接口设计项目的基础上进行改进的,不了解的可以先看那个。本次设计需要一个0.5s的计数器和一个状态计数器,状态计数器的累加改变图像的显示状态,每记数0.5s显示下一幅图像,在显示图像时一定要在显示有效区进行显示,由于总统设计比较简单,不再过多详述。代码设计部分主要代码展示,笔者在设计过程中state在两个always块中进行了赋值,结果报错Error (1..
2020-06-27 22:47:41
389
原创 VGA颜色分块显示
项目名称Vga不同颜色分块显示具体要求显示任意颜色,例如上下平分屏幕,红绿上下显示。屏幕四等份平分,顺时针显示红、绿、蓝、黄。设计架构这个小项目和vga显示上改进的,比较简单,四等份平分需要注意 每一部分的长宽都必须相等,笔者计算每部分的计数值画的草图如下,在显示区域之外为消隐区, 不再多说直接上代码 代码设计红绿显示,部分代码参考上个项目,必须在显示标志区内才能正常显示//显示区标志always@(*)...
2020-06-27 18:55:03
1432
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人