自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 FPGA联调上位机(spi时序)

1.调试的时候,发现上位机接收到的数据少了一位(考虑的上位机接收时序为下降沿接收数据所以回传数据也应该为下降沿回传)/*******************************************************************************************//*******************************Host_data****...

2019-05-21 15:37:57 1258 1

原创 FPGA的a_7系列芯片对ddr3的控制

1.原理图——————这次设计的数据流是产生数据的模块是image-ctrl模块、ddr3控制模块、hdmi-buffer、vga-ctrl模块、以及hdmi转换模块。               该模块的有2个操作始终,其中vga_clk 65M是用来产生数据的,ui_clk为ddr3控制模块的写入数据与地址的时钟,跨时钟域数据传输将32bit的图像数据转换为128bit的数据。rd_e...

2018-09-24 21:20:44 4454 3

原创 基于modelsim对ddr3的波形仿真

1.写入数据:本模块的写入的数据是32位宽的0--4096,而地址是按byte进行掩码,且突发长度为64,所以每次写结束写命令地址需要增加256,根据需求不同,所有数据都可以调整。2.写结束   根据modelsim的仿真窗口,可以看出bank=7,col=3fe的数据为0fff即4095.所以数据可以看出数据已经成功写入。3.写模块的波形      这是写模块的第一个周期...

2018-09-10 20:05:36 1946

原创 基于fpga对ddr3的读写控制

1.很多情况下,fpga的内部ip ram的存储量较小,所以需要外挂容量大的芯片。内部的芯片ram称为静态ram,其读写简单,速率中等,缺点就是存储空间较小。spartan—6芯片的最小单元为9k;充电刷新保持数据的额sdram称为动态ram,其容量大,缺点就是高功耗,管脚多,操作时许复杂,占用面积大。无论是静态还是动态ram都是一种易失性器件。2.当前比较常用的是ddr3,有关ddr3的介绍...

2018-09-10 09:11:14 20228 2

原创 基于FPGA的updata大综合设计

1.原理图,这次的协议是7*55/d5/aa(擦出flash)55(在flash中写入数据)。因此frame的控制模块至关重要。2.仿真结果   这是仿真的frame控制模过滤协议之后产生的擦除地址与标志位,图中可以看出能够产生。    这是flash的擦除模块,这是flash模块中的扇区自动加一,这次擦除了8个扇区。     这是擦除完成的标志位,回传55表示擦除...

2018-09-03 14:50:55 698

原创 基于FPGA的flash分区实现多功能转换(icap核)

1.前文提到通过硬件代码描述可以将程序固化到flas中,但是只能实现单一功能,无法实现多功能切换。本文通过调用ise的ip核,固化代码实现流水灯与呼吸灯的切换。2.这次的联系,主要是为了下次的在线升级的多种功能综合做铺垫。如果只是为了实现这种转换,利用状态机也可以实现,icap可以将flash实现功能分离。实现多个功能不在需要下载器下载。3.练习代码如下:module icap_ct...

2018-08-31 09:58:09 3637 2

原创 基于FPGA的flash板卡程序擦除与固化

1.擦除程序,程序擦除是可以用软件,但本文主要讨论用代码实现擦除。擦除已经固化好的程序需要对flash芯片(M25P94)的时序进行描述。时序原理如图所示:    这里主要是对flash的前8个扇区进行擦除,为了产生擦除标志,所以多家了一个wait_3s的标识,8个扇区总共需要24秒。2.固化原理描述,fpga是没有存储程序的空间的。所以需要flash芯片来存储程序,可以用ise软件固...

2018-08-31 09:46:50 4866 1

原创 基于FPGA对图像边沿检测

1.sobel算子是一个基于3*3矩阵。属于精简的图像边沿检测,这里简述其原理。主要是对FPGA中的ip核,这次涉及到双fifo流水处理图片对其边沿进行检测。需要对数据进行延时,其原理为:         当前的输入数据pi_data由于fifo1和fifo2的读使能来源于写使能延时,而写使能来源于当前数据的标志位,即pi_flag(截图中没有)。所以当前数据要根据读使能延时跟当前的fif...

2018-08-26 16:01:32 1118

原创 基于fpga的精简协议帧实现(仿真模块利用task)

1.数据在传输过程中,需要对数据加密或者按照一定的协议进行数据传输。这次是基于uart芯片对数据进行传输。总共需要3个模块。分别是uart的发送,传输模块以及协议验证模块。需要说明的是uart的接受模块中需要产生一个数据中断位。这样在数据传输过程中,才可以对数据中断,否则会一直有乱码产生。2.协议帧实现模块,主要使用了之前的状态机。多次采集,对应状态必须严格对比,严格转移。(这次的协议帧是16...

2018-08-22 09:15:40 1040

原创 基于FPGA的内部IP核fifo信号仿真

1.fifo为先进先出的ip核,与ram的不同的是,fifo只读一次。     将fifo放到一个模块中,利用测试模块产生fifo所需要的信号,这次调取的fifo ip核主要有输入数据、写使能信号、读使能信号,以及、数据空状态、数据满状态这5个输入信号,这些信号需要在测试模块中产生。fifo的写使能处于高电平状态、时钟采集沿就会采集数据。2.fifo模块程序,调用ip核对于ise要在工程中...

2018-08-21 20:16:12 2107

原创 基于FPGA实现UART协议,最终在显示器上实现图片传输

1.原理图,需要用到5个模块。分别是时钟分频模块,ram随机存储模块,uart发送、接收检测模块,vga图像显示模块。                                             2.这次属于模块的顶层例化,比较难想明白的是,如果终端图片发送,写地址清零。而且很多细节问题需要多次调试,第一次实现图片回传与上位机检测,发现上位机可以接收到回传信息。。第一次调试...

2018-08-20 07:52:52 3728 5

原创 基于FPGA的UART数据串口通信

1.通过uart芯片实现数据回传测试,最终通过串口助手发生数据,第一部先将原理图P出。          2.代码仿真,对各个信号进行原理仿真,各个信号的名称意义。(1).rx_data:就是上位机传来的数据信号。由于数据传输的时间与FPGA的时钟信号不一定同步,可能产生亚稳态,所以要将传来的信号进行握手延时。最终实现信号同步。rx_data_2与r...

2018-08-17 10:36:40 2155

原创 FPGA实现串口通信

1.原理介绍:FPGA实现串口通信,将8bit的数据按照从地位到高位的串口发送。将原理图P上来。2.通过与按键消抖模块利用top_down,让按键按一次,实现自加1,加到1111_1111。    按键产生数据程序:module gen_data( input wire sclk, input wire rst_n, input wire key_out_in,...

2018-08-16 09:26:53 8050 3

原创 利用modulesim对FPGA的ip核ram进行仿真

1.第一步这次仿真的是ram,先说下ram原理,缓存数据。对数据进行缓存,然后通过接口把数据传输出去。       2.这次仿真的是简单双口ram核,在ise的图形化设置界面可以看到。所以不再次赘述,但是仿真的时候,一定要保证对应位宽相同。是8位就是8位,少了多了都不行,例化的时候,我改小的时候,数据一直传输不出来,输出的数据一直处于高阻态。其他的信号都是可行的...

2018-08-14 12:29:21 2720

原创 led实现呼吸灯

1.呼吸灯原理就是要让led灯的亮灭时间不同,需要多个计数器实现。从1us到1s钟,改变led呼吸灯的触发条件。2.依旧把程序写出来,这次在写计数器的时候,发现自己很大问题,就是计数器条件写不全。要不就是只写计数不清零,要么就是忘记清零不拉高。说白了,就是不理解时序,没有将一个周期的计算器完全描述出来。module hx_led( input wire sclk, input...

2018-08-12 10:46:46 14063

原创 VGA原理---利用FPGA在显示屏上实现640*480的图片

1.原理图,VGA原理不同的显示要求有不同的显示协议,对于640*480@60HZ,时钟的频率需要达到25MHZ。2.xilinx的spartan-6时钟为50MHZ可以利用之前的IP核调用分频器,也可以自己写一个模块。module rgb_ctrl( input wire rst_n, input wire sclk, //时钟是25M output ...

2018-08-11 21:11:21 8659

原创 利用FPGA开发板做一个模拟可乐机

第一步,输出要求。声明由于我的呼吸灯还没有实现,所以按照要求做了修改(老师当时要求的是左流水和右呼吸)第二步,关键的信号描述EN_ctrl用了2个模块分别计数。之前可乐机状态机的状态也需要输出。按键例化的时候将之前的按键消抖2次就可以完成。第三步,依然是把关键程序写出来。这里有2个新加了2个模块。实际上是三个模块,出可乐驱动信号,出可乐找钱驱动信号,还有就是led控制模块。m...

2018-08-11 17:20:12 911

原创 FPGA按键消抖后实现流水灯控制

第一步,依旧上原理图          第二部,编译代码,以及测试文件module key_out( input wire sclk, input wire rst_n, input wire key_in, output reg key_out);reg [18:0]cnt;parameter CNT_MAX=5...

2018-08-09 08:21:42 2323

原创 利用状态机实现一罐可以2.5元的售货机

第一步,画出原理图 第二步,将画出的原理图利用硬件语言实现module fsm_cola_ctrl( input wire sclk, input wire rst_n, input wire [1:0]pi_money, output reg po_cola, output reg po_money);reg [4:0] state;param...

2018-08-07 22:01:26 1533 1

原创 计数器的方法实现可乐售卖机

第一步,先将要求原理画出来。第二步,将以上原理用硬件语言描述出来。module coal_ctrl( input wire sclk, input wire rst_n, input wire pi_money, output reg po_cola );reg [1:0] cnt;always@(posedge sclk or negedge rst...

2018-08-07 20:33:09 452

原创 ISE 工程调用PLL锁相环生成四种不同类型的时钟

第一步,用ise建立工程 ,这里不再赘述第二步,建立PLL工程,必须建立IP核工程才可以调用PLL。ip核在tools目录下。这里需要注意在配置完选型,需要将语言修改为verilog。第三步,双击clocking,进行需求配置。 第四步,老师课内配置如下    注意,没有使用PLL中的复位,只是使用了锁存位即locked第五步,将生成的IPcord记住所在文件位...

2018-08-06 21:00:16 7716 3

原创 FPGA top_down 将分频与led流水灯例化到顶层文件中

第一步:先用visio将原理图画出来第二步 利用UE编译器将原理实现第一个模块,利用计数器实现分频module freq_ctrl(input wire sclk,input wire rst_n,output reg slow_clk); reg [5:0] cnt;parameter CNT_MAX=25-1;always@(posedge scl...

2018-08-06 20:07:02 1432

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除