![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Verilog
搞IC的那些年
数字IC领域非知名作者
展开
-
Verilog 使用延时法进行时钟2倍频(原理模拟)
模拟clk经过组合逻辑延时,生成clk_gate_delay。相异或后得到二倍频信号。注:本代码`timescale 1ns/1nsmodule gate_delay_pll();reg clk;reg clk_gate_delay; //模拟经过数个逻辑门后的时钟信号(有延时)wire dpll_clk;assign dpll_clk = clk^clk_gate_delay;initial begin #300; $finish(); endinitial begin cl原创 2021-11-17 17:02:41 · 4125 阅读 · 2 评论 -
【verilog】双口RAM(仿真模型)
模块代码测试代码仿真波形模块代码/** 双端口ram,宽度为8,深度为16(所用地址线为4根), */module dpram#(parameter RAM_WIDTH = 8 ,parameter RAM_DEPTH = 16,parameter ADDR_LINE = 4)( input wr_clk, input rd_clk, input wr_en, input rd_en, input [RAM_WIDTH-1:0]wr_data, output reg [RAM_WI.原创 2021-11-14 17:25:38 · 5079 阅读 · 1 评论 -
【verilog】 Vivado-Simple Dual-Port RAM IP的使用(Xilinx FPGA,双口RAM,IP使用)
简单双口RAM的IP核配置IP例化顶层测试波形简单双口RAM的IP核分A端口和B端口A为输入端口,负责数据的写入B端口为输出端口,负责数据的读出两端的时钟可以不同,还允许在写入A的同时读B。配置IPvivado 2019.2IP catalog -> Memories & Storage Elements -> RAMs & ROMs & BRAM -> …例化顶层module top( input clka, input wea,.原创 2021-11-06 13:50:20 · 7208 阅读 · 1 评论 -
FPGA PWM调控(Verilog)
PWM1 PWM调控2 代码3 效果图1 PWM调控可调占空比本质上就是计数+译码,计数器从0计到period-1,是pwm的整个周期。译码器实现在,计数值小于pulse_width的时输出高电平,大于pulse_width时输出低电平。从而实现可调节的占空比。2 代码module pwm( input clk, input reset_n,原创 2021-10-25 11:12:07 · 6420 阅读 · 0 评论 -
【verilog】动态数码管显示(带符号和定点小数,FPGA)
电路设计程序设计顶层模块主模块结果电路设计程序设计顶层模块测试显示内容 “-432.10”module signed_seg_top(clk,rst_n,seg_sel,seg_led); input clk; input rst_n; output [5:0] seg_sel; output [7:0] seg_led;signed_seg f0 ( .clk(clk) , .原创 2021-07-08 08:49:35 · 5033 阅读 · 7 评论 -
【verilog】 AB相旋转编码器驱动(fpga,正交编码器,霍尔编码器驱动)
I 编码器时序II 电路设计III 程序设计IV 仿真1testbench2波形I 编码器时序A的上升沿时候如果B为低电平,则旋转编码器向右转。A的下降沿B为高电平,则一次右转结束。A上升沿时候如果B为高电平,则旋转编码器向左转A的下降沿B为低电平,则一次左转结束。II 电路设计III 程序设计module abcode( clk, rst_n, A, //A相 .原创 2021-06-26 20:47:32 · 8244 阅读 · 7 评论 -
【veriog】正向计时器设计(FPGA,秒表,时钟,正向计时)
硬件部分设计思路代码(verilog)顶层模块(连接计时器与数码管)计时器模块数码管显示模块testbench*(单独对计时器模块进行测试)波形图硬件部分使用6位8段数码管将时间值显示出来设计思路将时间拆分为6个参数: s1 -> 秒个位 s10 -> 秒十位 m1 -> 分个位 m10 -> 分十位 h1; -> 时个位 h10; -> 时十位在异步复.原创 2021-06-24 13:20:31 · 5568 阅读 · 1 评论 -
FPGA IIC连续读写操作(Verilog)
I 说明II AP3216CIII 程式说明IV 模块分解1顶层模块2AP3216C模块(控制连续读写)3按键转状态模块4数码管显示模块5iic协议模块I 说明本程式对IIC协议模块:链接,进行连续读写测试。测试对象为AP3216C传感器,通过对其进行连续的写数据,读数据。从而完成对该传感器的初始化与使用。学习的重点应为使用多路器+状态值 的方法,借助IIC协议模块“iic_done”信号的反馈,来完成连续读写。II AP3216CAP3216C是一款环境光传感器,本程式将通过IIC协议读出此.原创 2021-03-10 22:44:48 · 3626 阅读 · 0 评论 -
【verilog】一主多从模式下的IIC驱动(三段状态机法)(fpga)
有关IIC时序部分:链接上一篇,一段状态机的iic驱动:链接MIAN/* iic freq = 250khz fpga freq = 50Mhz 向内部寄存器地址位数为8的从机写数据:1->3->4->7 need:type16_type8=0,read1_write0=0. 向内部寄存器地址位数为16的从机写数据:1->2->3->4->7 need:type16_type8=原创 2021-03-09 21:10:58 · 2785 阅读 · 0 评论 -
【verilog】FPGA 一主多从模式下的IIC驱动(一段状态机法)
module i2c_dri #(// slave address(器件地址),放此处方便参数传递 parameter SLAVE_ADDR = 7'b1010000 , parameter CLK_FREQ = 26'd50_000_000, // i2c_dri模块的驱动时钟频率(CLK_FREQ) parameter I...原创 2020-05-05 13:27:12 · 1916 阅读 · 5 评论 -
【I2C】IIC读写时序
I2C读写时序I2CI2C写时序I2C读时序I2CI2C 总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址(可以从 I2C 器件数据手册得知),主从设备之间就是通过这个地址来确定与哪个器件进行通信I2C 总线数据传输速率在标准模式下可达 100kbit/s,快速模式下可达 400kbit/s,高速模式下可达 3.4Mbit/s。I2C写时序......原创 2020-04-20 11:01:32 · 11497 阅读 · 0 评论 -
【verilog】 FPGA倒计时器设计
思路CODE顶层CODE思路将时间拆分为6个参数: second_1 -> 秒个位 second_10 -> 秒十位 minute_1 -> 分个位 minute_10 -> 分十位 hour_1; -> 时个位 hour_10; -> 时十位在异步复位的时候为上述六个参数赋初始值。然后对50Mhz系统时钟进行计数,计数50M次(即为1s)。然后对六个参数.原创 2021-02-23 18:28:55 · 16942 阅读 · 10 评论 -
【verilog】UART 串口接收(FPGA)
module ser_rx(clk,rst,rx,rx_done,rx_state,outdata); input clk; input rst; input rx; output reg[7:0]outdata; output reg rx_done; output reg rx_state; reg[15:0] baud = 16'd324; //9600=324, 19200=162, 3原创 2021-02-23 15:29:47 · 1010 阅读 · 0 评论 -
FPGA 移位寄存器检测串行序列(Verilog)
文章目录1说明1说明可用于检测一串数据的头与尾,然后将代表不同含义的数据分开。原创 2021-02-23 09:06:58 · 1087 阅读 · 0 评论 -
【verilog】UART串口发送(FPGA)
简述核心代码仿真测试简述串口发送是以一定速率发送单bit数据,通常一组数据为10bit。空闲状态为高电平,起始位为0,中间以低位在前的方式发送8bit数据,终止位为1。采用计数器 [cnt_baud] 对系统时钟进行计数,计满值即为预设的波特率值 [baud_num]在这个计数过程中,每当计数值为1时,就产生一个标志值 [flag1]采用计数器 [cnt_for_flag1] 对flag1进行计数11次,当计数值达到11时,同步清零。所以cnt_for_flag1 = 11 只能维持1个系统时.原创 2021-02-22 09:29:17 · 2740 阅读 · 1 评论 -
FPGA RGB565的LCD显示屏驱动(Verilog)
文章目录1屏幕2行场扫描时序3分析4代码4-1产生9M驱动时钟4-2驱动部分4-3显示内容部分4-3顶层5结果5-15-26Testbench1屏幕使用像素:480*272的一块RGB565屏幕。像素时钟:9Mhz接口: lcd_bl:lcd背光 lcd_rgb[15:0]:色彩值 lcd_de:当计数器处于valid(有效)区域时应将其拉高,此时输出lcd_rgb[15:0]的值到屏幕的对应像素点上。 lcd_hs:可一直将其拉高没有影响 lcd原创 2021-02-09 20:48:12 · 5205 阅读 · 0 评论 -
【verilog】按键消抖(FPGA,低电平有效按键,状态机法)
在按键信号的首尾加上计数器,以达到去抖的效果。module key (in,clk,rst_n,outkey,outflag); input in; //按键输入(物理) input clk; input rst_n; output reg outkey; //按键输出(同步) output reg outflag;//按下/松开标志//-----------------------------------------------原创 2020-12-18 09:21:34 · 1798 阅读 · 0 评论 -
【verilog】FPGA 动态数码管显示
文章目录硬件部分结构图Verilog代码顶层测试代码6x8位数码管效果图硬件部分硬件采取6个八位共阳数码管,FPGA对单个数码管的驱动方式是低电平有效。(若移植请注意)结构图Verilog代码顶层测试代码module top( input clk, input rst, output [5:0] dig, output [7:0] dict);dig8_6 dig8_6_1( .clk(clk), .rst(rst),原创 2020-09-27 09:16:28 · 16606 阅读 · 15 评论