随笔分类 - FPGA造轮子(xinlinx)XC7A35TFGG484
小梅哥课程学习——SPI接口的74HC595驱动数码管实验
摘要:1 //要求:对于74HC595芯片,该芯片在SH_CP(SCLK)的上升沿将DS(DIO)上的数据移入内部的寄存器。 2 //目的:因此我们需要保证DS上的数据在SH_CP的上升沿前后一段时间,保持稳定。 3 //手段:FPGA要在SH_CP的下降沿改变DS的值 4 //先移入的数据,在高位输出。
阅读全文
小梅哥课程学习——数码管动态扫描显示的verilog实现(C)
摘要:1 //动态数码管扫描,通过这种方式可以节约引脚 2 //可以使用三八译码器来切换数码管位 3 //要求每个数码管每20ms都要点亮一次,20/8=2.5ms 4 //源代码1用的是组合逻辑 5 module hex8( 6 clk, 7 reset_n, 8 disp_data, 9 sel, 1
阅读全文
小梅哥课程学习——基于verilog系统函数语法的按键抖动模拟与仿真(C)
摘要:1 //源代码,因为在返回到空闲状态时没有清零 2 module key_filter( 3 clk, 4 reset_n, 5 key, 6 // key_p_flag, 7 // key_r_flag, 8 key_flag, 9 key_state 10 ); 11 input clk; 12
阅读全文
小梅哥课程学习——基于verilog系统函数语法的按键抖动模拟与仿真(B)
摘要:1 //课程重点:学会分析状态(学会画出状态转换图)空闲态、消抖状态、等待释放、释放消抖状态。 2 //没有被按下,空闲静止态,高电平。 3 //按下过程中,抖动过程,会高低电平多次变化。 4 //按下以后,抖动结束,处于按下静止态,输出低电平。 5 //释放过程中,抖动过程,会高低电平多次变化,最
阅读全文
小梅哥课程学习——串口接收模块的项目应用案例(扳级验证,未出现结果,(可能其中代码有误未发现。),待处理)
摘要:1 //还没找到出错的原因 2 //使用串口来控制LED的工作状态 3 //使用串口发送指令到FPGA开发版,来控制第7课中第4个实验的开发版上的LED灯的工作状态。 4 //让LED灯按照指定亮灭模式亮灭,亮灭模式未知,由用户随机指定。8个变换状态为1个循环,每个变化状态的时间值,可以根据不同的应
阅读全文
小梅哥课程学习——串口接收程序的设计与调试
摘要:1 //基本原理:采样 2 //技巧是:一位数据采多次,统计得到高电平的出现的次数 3 //次数多的就是该位的电平值。采样7次,0、1、2、3低电平,4、5、6、7位高电平。 4 //把一位数据分为16段,舍弃前五段和后四段,取中间7段来进行采样。 5 //起始位检测:通过边沿检测电路。 6 //设
阅读全文
小梅哥课程学习——串口发送之采用状态机实现多字节数据发送
摘要:1 //使用串口发送5个字节的数据到电脑上面 2 //1、ADC,采样结果是12位的,怎么使用串口进行发送。 3 //2、16位的数据,怎杨通过串口发送 4 //有多个字节的数据通过串口发送 5 //uart协议规定了只能发送6,7,8位数据。 6 //两种情况,1、没有开始发送(上一次已经发送完成
阅读全文
小梅哥课程学习——串口发送应用之发送数据(可在vivado中仿真出现正确波形)
摘要:1 //1、底层代码源代码发送10位数据 2 module uart_pr( 3 clk, 4 reset_n, 5 send_go, 6 data, 7 baud_set, 8 tx_done, 9 uart_tx 10 ); 11 input clk; 12 input reset_n; 13
阅读全文
小梅哥课程学习——串口发送应用之发送数据(适用于板级验证,时间间隔位100ms)
摘要:1 //此代码的注意事项,首先这个代码不能仿真成功会出现一定的时间延迟, 2 //因为在做板级验证的时候把时间改成了100ms发送一次,要想仿真成功,把时间改成499999 3 //使用上一节课设计的发送模块,设计一个数据发送器, 4 //每10ms以115200的波特率发送一个数据,每次发送的 5
阅读全文
小梅哥课程学习——串口通信的发送与调试(重在调试过程)
摘要:1 源代码 2 module uart_byte_tx( 3 clk, 4 reset_n, 5 data, 6 send_en, 7 baud_set, 8 uart_tx, 9 tx_done 10 ); 11 input clk; 12 input reset_n; 13 input [7:0
阅读全文
小梅哥课程学习——LED花式玩法(从计数器器到线性序列机)——实验六
摘要:1 //每隔10ms,让led灯的一个8状态循环执行一次(每个变化时间值小一点,方便测试比如设置为10us) 2 源代码 3 module counter_led_6( 4 clk, 5 reset_n, 6 Time, 7 ctrl, 8 led 9 ); 10 input clk; 11 inp
阅读全文
小梅哥课程学习——LED花式玩法(从计数器器到线性序列机)——实验一
摘要:1 //让LED按照量0.25秒,灭0.75秒的循环亮灭。 2 原代码 3 module counter_led_1( 4 clk, 5 reset_n, 6 led 7 ); 8 input clk; 9 input reset_n; 10 output reg led; 11 parameter
阅读全文
小梅哥课程学习——LED花式玩法(从计数器器到线性序列机)——实验二
摘要:1 //让LED灯按照亮0.25秒,灭0.5秒,亮0.75秒,灭1秒的状态循环亮灭。 2 源代码 3 module counter_led_2( 4 clk, 5 reset_n, 6 led 7 ); 8 input clk; 9 input reset_n; 10 output reg led;
阅读全文
小梅哥课程学习——LED花式玩法(从计数器器到线性序列机)——实验三
摘要:1 //让LED灯按照指定的亮灭模式亮灭,亮灭模式未知,由用户随机指定。以0.25秒为一个变换 2 //周期,8个周期为一个循环。8*0.25=2,2s➗20ns=100 000 000 3 源代码 4 module counter_led_3( 5 clk, 6 reset_n, 7 ctrl,
阅读全文
小梅哥课程学习——LED花式玩法(从计数器器到线性序列机)——实验四
摘要:1 //让LED灯按照指定的亮灭模式亮灭,亮灭模式未知,由用户随即指定。 2 //8个变换状态为一个循环,每个变换状态的时间可根据不同场景选择。 3 源代码 4 module counter_led_4( 5 clk, 6 reset_n, 7 Time, 8 ctrl, 9 led 10 ); 1
阅读全文
小梅哥课程学习——LED花式玩法(从计数器器到线性序列机)——实验五
摘要:1 //让多个LED灯按照设置的模式,各自在一个变化值循环独立亮灭。 2 //源代码 3 module counter_led_5( 4 clk, 5 reset_n, 6 Time, 7 ctrlA, 8 ctrlB, 9 led 10 ); 11 input clk; 12 input rese
阅读全文
小梅哥课程学习——(5)(设计一个以不同频率闪烁的4个LED灯,闪烁时间分别位0.1s,0.2s,0.3s,0.4s)源代码和仿真文件,(使用参数化设计实现模块化的重用)
摘要:1 //单个LED灯以一秒闪烁的源代码 2 //利用单个的闪烁源代码,来实例化不同频率闪烁的灯 3 module led_run8( 4 clk, 5 reset_n, 6 led 7 ); 8 input clk; 9 input reset_n; 10 output reg led; 11 re
阅读全文
小梅哥课程学习——(4)跑马灯(各种写法,学习语法)源代码和仿真文件
摘要:1 //跑马灯(三种不同的写法)源代码 2 module led_run_p( 3 clk, 4 reset_n, 5 led 6 ); 7 input clk; 8 input reset_n; 9 // output reg [7:0] led;//前面两次跑马灯写法所用的语句 10 outpu
阅读全文
小梅哥课程学习——(3)(设计一个以1秒频率闪烁的LED灯,亮灭各500ms)源代码和仿真文件
摘要:1 4、设计一个以一秒闪烁的LED灯(亮灭各500ms) 2 //分析,由于这次实验引入了上升沿,这个上升沿是时序逻辑电路,只有当上升沿到来时,才会出现发生改变。 3 //由于ACX720内部是50Mhz晶振,故而周期为20ns,500ms➗20ns=25 000 000(个计数单位), 4 //而
阅读全文
小梅哥课程学习——(2p)4—16译码器源代码和仿真文件
摘要:1 //4—16译码器源代码 2 module decoder_4_16( 3 a, 4 b, 5 c, 6 d, 7 out 8 ); 9 input a; 10 input b; 11 input c; 12 input d; 13 output reg [15:0] out; 14 alway
阅读全文