
verilog &FPGA
文章平均质量分 56
王者时代
浙江大学在读研究生,电子信息,毫米波雷达,嵌入式软硬件,labview,matlab,freertos,stm32/gd32/esp8266/esp32
展开
-
【FPGA/verilog -入门学习17】vivado 实现串口自发自收程序
bsp_generate_clk_en:接收波特率时钟产生模块,当rx接收到数据时,给一个start信号给波特率时钟产生模块,由bsp时钟产生模块按9600波特率产生时钟使能信号bsp_generate_clk_en 用于同步rx 接收模块接收数据的时序。tx发送模块:当接收到来子rx 接收模块发过来的rx_done 信号后,将[7:0]rx_data 的数据按波特率时钟产生模块的顺序依次发送出去。bsp_generate_clk_en:发送波特率时钟产生模块,功能同接收模块。修改代码后,测试ok。原创 2024-01-10 15:43:06 · 974 阅读 · 0 评论 -
【FPGA/verilog -入门学习16】fpga状态机实现
(每个时钟周期输入 1bit),当检测到一串“101100”的输入数据时,产生一个时钟周期的。用两段式状态机设计序列码检测机。这个序列码检测机用于检索连续输入的 1bit 数据。原创 2024-01-02 15:56:56 · 606 阅读 · 0 评论 -
【FPGA/verilog -入门学习15】vivado FPGA 数码管显示
1,74hc595驱动,将串行数据转换成并行输出。对应研究手册2,发送之前将要发的数据,合并成高8位:SEG,低8位:SEL, 结合testbanch查看波形,使用测试代码验证显示。原创 2024-01-02 13:35:46 · 2349 阅读 · 0 评论 -
【FPGA/verilog -入门学习14】vivado FPGA按键消抖
【代码】【FPGA/verilog -入门学习14】vivado FPGA按键消抖。原创 2023-12-28 17:15:01 · 647 阅读 · 0 评论 -
【FPGA/verilog -入门学习13】verilog 1s流水灯实验
另外移位还可以通过以下方式实现if(cnt == MAX_CNT) led原创 2023-12-27 17:14:35 · 608 阅读 · 0 评论 -
【FPGA/verilog -入门学习12】Verilog可配置的PWM设计,参数传递的3种方式
去掉模块定义中的这4个输入,改为VIO提供,由软件控件配置参数,通过JTAG 线缆,传递给芯片。o_pwm 在计数到0~正数占空比来临前置高,其他时间置低。4,o_vld 在最高计数来临时,置高,其他时间置低。将i_en 配置成按钮button ,按下是高电平。output reg o_vld,//有效信号。1,需求实现可配置PWM输出(频率,占空比)3,定义计数寄存器reg [7:0]cnt;用于计数,0~ 分频最大值,其他3个配置位,10进制输入。步骤2,添加vio ip核。点击i_en 开始测试。原创 2023-12-14 14:32:30 · 4304 阅读 · 0 评论 -
【FPGA/verilog -入门学习11】verilogTestbench中的文本文件写入,读出,打印等操作
即$readmemh ("",,,),此时会将从数据文件中读到的第1个数据填入数组的起始地址,此后类推,直到指定的终结地址对应的数组也被赋值。即$readmemh ("",,),此时会将从数据文件中读到的第1个数据填入数组的起始地址,此后类推,直到数组被填满。而之前被起始地址跳过的数组的数据则不会被赋值。指定数据从数组的地址2开始赋值,直到地址8终结,则地址2应该被赋值0,地址3被赋值1,···等等,直到地址8也被赋值。原创 2023-12-12 16:21:10 · 4032 阅读 · 0 评论 -
【FPGA/verilog -入门学习10】verilog 查表法实现正弦波形发生器
那么就意味着你会延时两个时钟周期输出数据,在Summary中也可查看。1,使用matlab 生成数据,制作sin_rom.coe文件。寻址的位宽是10位,数据量是1024个,输出的数据是16位。y范围:0~2^16 -1 = 0~65535。输入是0~1023 1023 占用10位。用查找表设计实现一个正弦波形发生器。这里要注意一下,只要在IP中勾选了。原创 2023-12-12 14:17:17 · 3937 阅读 · 0 评论 -
【FPGA/verilog -入门学习9】verilog基于查找表的8位格雷码转换
查找表(Look-Up-Table)查找表,简单说,就是一个预先存储好结果的数据表通过访问这张预先存储好结果的数据表,可以快速的获取不同输入的输出结果查找表可以免去运算的过程,尤其对于复杂的运算更是可以大大减少运算开销和运行时间。原创 2023-12-11 17:05:19 · 2940 阅读 · 0 评论 -
【FPGA/verilog -入门学习8】verilog格雷码与二进制互相转换-公式法
1,操作步骤,可以先从4位的二进制/格雷码互相转换熟悉公式法方法2,完成初步的熟悉过程后,再通过端口定义常量方法将位数传递出去3,在generate for 语句中,赋值为组合逻辑的写法4,异或和次方的写法异或:c = a ^ b;次方: d = 2**3;//2的3次方// 计算2的4次方,并将结果存储在d中。原创 2023-12-11 14:22:18 · 1119 阅读 · 0 评论 -
【FPGA/verilog -入门学习7】 条件判断if与分支判断case语句的语法介绍
条件判断if与分支判断case语句的语法介绍原创 2023-12-10 22:26:09 · 808 阅读 · 0 评论 -
【FPGA/verilog -入门学习6】verilog频率计数器
2,输出计数值《=上升沿来临时候从0开始计数,直至下一个上升沿脉冲到来结束,把计数值传出去。两个上升沿之间的时钟周期数并输出,即输出脉冲频率的计数值。1,输出产生计数完成状态《=EN 且有上升沿脉冲。使能信号:高电平进行频率计数,低电平清零计数器。周期性脉冲信号:需要做检测的脉冲频率信号。有效信号:该信号拉高时,输出计数值有效。在使能信号控制下,计算输入脉冲的每。计数值:输出脉冲频率的。原创 2023-12-10 21:43:40 · 1135 阅读 · 0 评论 -
【FPGA/verilog -入门学习5】verilog中的genrate for 和for 以及数组的用法
本文参考:verilog generate语法总结-优快云博客Verilog数组赋值_笔记大全_设计学院在Verilog中,和都是用于循环的结构,但是它们具有不同的应用场合和语义。循环:循环主要用于行为描述(behavioral description),通常用于描述算法或数学运算。循环在仿真时执行,因此,任何在循环中使用的变量都必须是仿真时间可访问的。循环通常在初始化代码或在行为模型中使用,不适用于综合。示例:generate for的用法循环:循环用于结构描述(structural desc原创 2023-12-09 13:13:58 · 7984 阅读 · 0 评论 -
【FPGA/verilog -入门学习4】verilog 实现多路脉冲计数
使用带{} 表示产生的是正数,%后面的数表示数据的范围0~99。output [31:0]o_cnt_0, //数据也是并行的,用o_cnt_0~o_cnt_3。不带{} 产生的是有符号的数字,范围是-99~99。计数器:在使能信号高电平期间,对脉冲信号的上升沿进行检测并递增计数值。input[3:0]pulse //多个输入,数据是并行的,定义方式。输入脉冲:4路脉冲信号,分别对每路进行脉冲检测并计数。output [3:0]o_state //输出状态。使用上一章的一路脉冲检测,使用例化方式产生多路。原创 2023-12-08 21:16:24 · 1115 阅读 · 0 评论 -
【FPGA/verilog -入门学习3】verilog脉冲计数
步骤2,对输出o_state 实现方式:在每一次en=0 时识别为计数结束。步骤3:使用内部寄存器r_cnt ,当en=1时,pluse 的上升沿脉冲计数。步骤4:当en = 0时,且r_cnt 有数值,将o_cnt原创 2023-12-08 11:02:09 · 1922 阅读 · 1 评论 -
【FPGA/verilog -入门学习2】verilog 生成上升沿下降沿脉冲
使用脉冲边沿检测法设计一个上下降沿检测功能。原创 2023-12-07 17:27:08 · 3311 阅读 · 0 评论 -
【FPGA/verilog -入门学习1】verlog中的BUFGCE,BUFGMUX原语
它有I0和I1两个输入,一个控制端S,一个输出端O。当S为低电平时输出时钟为I0,反之为I1。需要指出的是BUFGMUX的应用十分灵活,I0和I1两个输入时钟甚至可以为异步关系。此外,BUFGMUX还可以用于构建文件存储和分发服务,实现文件共享功能,并作为应用开发的基础组件,帮助开发者快速构建文件存储功能等。它有一个输入I、一个使能端CE和一个输出端O。只有当BUFGCE的使能端CE有效(高电平)时,BUFGCE才有输出。en =0时,out也没有立刻等于in2,而是多等了半个in1时钟。原创 2023-12-07 15:16:36 · 4245 阅读 · 0 评论