![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Verilog
文章平均质量分 60
桐桐花
努力学习ing
一些笔记是我看mooc学习整理的,仅供学习。如果侵权,请私信我删掉
展开
-
《计算机组成与CPU设计实验》5有限状态机的Verilog HDL描述(Finite State Machine,FSM)
多数控制逻辑都可以用有限状态机描述状态机是组合逻辑和时序逻辑的特殊组合状态的数量是有限的,故称为有限状态机(Finite State Machine,简称为FSM)输出仅取决于当前状态。在整个状态周期内输出保持不变,即使输入信号有变化。除当前状态外,输出还直接受输入影响,变化可能出现在任何时刻。玩具小车汽车的速度有四个状态:停止、低速、中速、高速。速度由刹车brake和加速器accelerator绝决定 状态图Verilog描述( Moore型状态机)输出仅取决于当前状态。 Mealy型状态机的描述原创 2022-06-02 11:51:57 · 1559 阅读 · 0 评论 -
《计算机组成与CPU设计实验》4 时序逻辑(三)
计数器逻辑功能对输入时钟脉冲进行计数 也可用于分频、定时、产生节拍脉冲等分类按时钟输入方式,分为同步和异步计数器 按进位体制,分为二进制、十进制和任意进制计数器 按计数方向,分为加法、减法和可逆计数器计数器的“模”(Modulo)计数器运行时,依次遍历规定的各状态后完成一次循环,它所经过的状态总数称为计数器的“模”,通常用M表示。例子:一个2位的二进制计数器循环输出00、01、10和11,称为模4计数器。同理,3位的二进制......原创 2022-05-31 14:47:48 · 3936 阅读 · 0 评论 -
《计算机组成与CPU设计实验》3 时序逻辑(二)
移位寄存器移位寄存器是什么?将若干个D触发器串接级联在一起构成的具有移位功能的寄存器。4位右移移位寄存器原来输出 Q0 Q1 Q2 Q3CLK上升沿到来输出 Q0=DSI Q1=Q0 Q2=Q1 Q3=Q2输出右移一位注意: 为了和图一致,把输出写成 Q[0:3]在逻辑电路中,习惯从左到右这种表达方法,在计算机中是...原创 2022-05-30 15:45:50 · 1110 阅读 · 0 评论 -
《计算机组成与CPU设计实验》3 时序逻辑(一)
逻辑电路的类型组合逻辑Combinational Logic没有记忆 输出由当前输入值决定时序逻辑Sequential Logic有记忆 输出不仅由当前输入值决定,还和以前的状态有关。D锁存器(D latch)D锁存器功能当使能端E=0时,输出Q保持原来的值不变,在E=1期间,输入端D值将被传输到输出端Q因此,也被称为透明锁存器(Transparent Latch)D锁存器表示符号D锁存器真值表D锁存器波形图...原创 2022-05-29 21:13:06 · 4148 阅读 · 0 评论 -
《计算机组成与CPU设计实验》2 组合逻辑(二)
编码转换译码器N个输入,个输出。只有一个输出有效(One-hot输出)。例子:2-4译码器Verilog代码module decoder( input [1:0] A, output [3:0] Y ); always_comb begin case(A) 00:Y = 4'b0001; 01:Y = 4'b0010; 10:Y = 4'b0100; 11:Y = 4'b1000; default..原创 2022-05-28 20:15:22 · 1726 阅读 · 0 评论 -
《计算机组成与CPU设计实验》1 组合逻辑(一)
逻辑电路的类型组合逻辑Combinational Logic没有记忆 输出由当前输入值决定时序逻辑Sequential Logic有记忆 输出不仅由当前输入值决定,还和以前的状态有关。持续赋值语句 Continuous Assignmentassign 语句assign A = B;//等号左边的值始终跟随右边改变例子:使用Verilog描述与非门module nand( input wire a; // wire可以省略 input wire b;.原创 2022-05-24 17:09:51 · 1691 阅读 · 0 评论 -
RTL设计指导原则
一、概述RTL级设计的评判标准很多,如时序性能、 所占面积、 可测试性、 可重用性、 功耗、 时钟域的分配、 复位信号设计 是否与所用EDA工具匹配 等。如果设计目标是在FPGA或CPLD等可编程逻辑器件上实现,则还需考虑是否能发挥这些PLD的结构特点等。设计原则根据这些目标的组合和优先级设置,可以派生出很多不同的设计原则。这里仅讨论一般意义的指导原则。通常来说,主要有三个指导原则:面积与速度互换、 乒乓操作、 流水线设计。面积与速度互换原...原创 2022-05-15 20:46:49 · 2345 阅读 · 0 评论 -
可综合风格——在RTL书写中如何考虑延迟、面积、功耗、布线
在RTL书写中如何考虑延迟举例:多if语句逻辑综合工具会将其映射为有优先级的级联的多路选择器。问题: 假设b信号的延迟较大,到来较晚,那么,电路应该如何修改?原则上,把b信号这个赋值支路放在最后一个mux上,这样可以隐藏其较大的延迟。直接把b这个分支放在最后,这样修改是否可行?修改前电路的功能:sel[0]=0、sel[1]=1、sel[2]=0、sel[3]=0,z=b。如果sel[2]和sel[3]有一个不等于0,z≠b。修改...原创 2022-05-12 15:42:20 · 1959 阅读 · 0 评论 -
Verilog HDL可综合描述(高质量Verilog书写)
一、VerilogHDL可综合概述1. Verilog HDL 的基本功能之一是描述可综合的硬件电路。对Verilog HDL的常见的误解:很多语法规则与C语言相似,书写时可参考C语言; 追求代码的整洁、简短; 着眼于代码书写,性能优化由综合器实现; 把Verilog代码当做了程序,把电路设计当成了编程;正确认知:HDL : Hardware Description是硬件描述HDL语言仅是对已知]硬件电路的文本表现形式编写前,对所需实现的硬件电路“胸有成竹”Verilog .原创 2022-05-10 21:32:29 · 4030 阅读 · 0 评论 -
Verilog基础(根据HDLBits整理)
Verilog代码中,每一个bit都对应电路的一部分。模块的声明两种端口声明语法风格:Verilog-2001:更容易阅读并减少拼写错误 verilog-1995:版本比较老下面的两个模块声明是可以接受的和等价的:声明一个模块// top_module模块名//in,out 端口名module top_module( input in, output out );endmodule模块和端口声明创建电路框架和端口。模块上的端口port模块上的端口有方..原创 2022-05-05 11:53:08 · 815 阅读 · 0 评论 -
HDLBits题目总结ing~
1、four wiresmodule top_module( input a,b,c, output w,x,y,z ); assign w=a; assign x=b; assign y=b; assign z=c; endmoduleassign可以修改为assign {w,x,y,z} = {a,b,b,c};原创 2021-11-03 19:32:49 · 276 阅读 · 0 评论 -
Verilog——反相器
反相器代码:module inv( A, Y );//A,Y是端口//定义端口属性input A;output Y;//定义输入输出关系assign Y=~A;//Y等于A的反endmodule//inv是module的名字原创 2021-06-20 17:33:14 · 7781 阅读 · 0 评论 -
Verilog——与非门
与非门符号:原创 2021-06-20 19:29:29 · 10885 阅读 · 0 评论 -
Verilog——多路选择器逻辑设计
模块fn_sw功能:当sel为0时y是a和b的与;当sel为1时y是a和b的异或。原创 2021-06-20 22:10:28 · 4837 阅读 · 1 评论 -
Verilog——补码转换
补码转换:正数补码与原码相同;负数补码转换方法是符号位不变,幅度位按位取反加一原创 2021-06-21 13:58:29 · 12071 阅读 · 3 评论 -
Verilog——7段数码管译码器
组合逻辑代码设计原创 2021-06-21 14:59:17 · 18007 阅读 · 6 评论 -
Verilog——计数器
时序逻辑代码设计原创 2021-06-22 21:41:51 · 6819 阅读 · 3 评论 -
Verilog——伪随机码发生器
4级伪随机码发生器原创 2021-06-24 16:31:25 · 3687 阅读 · 5 评论 -
Verilog——秒计数器
秒计数器原创 2021-06-27 22:05:15 · 5814 阅读 · 4 评论 -
Verilog——相邻点相加输出
data_in采样信号syn_in采样时钟data_in在syn_in上升沿变化,syn_in的频率比系统时钟频率低很多对相邻16点相加得到data_out,并由syn_out同步syn_out为一个系统时钟周期宽度的脉冲;规定:输入信号data_in为8位带符号位的原码,输出data_out为补码电路功能:对输入采样信号求补码,然后升位,然后进行16点相加,然后输出。为了保证相加节奏与采样时钟节奏相同,对采样时钟进行识别,同时,为了得到输出同步脉冲,对采样时钟16分频...原创 2021-06-28 23:18:41 · 1306 阅读 · 4 评论 -
Verilog——三角波发生器(状态机)
最简单的状态机:三角波发生器假设:上升为0状态,下降为1状态在0状态:计数器进行加一操作,加到299为止。在1状态:计数器进行减一操作,减到1为止。Verilog代码:使用case语句`timescale 1ns/10ps//testbench测试代码用的时间单位//上面没有看到输入端口,但是这是时序电路,所以有时钟和复位端口,clk和resmodule tri_gen( clk, res, d_out );input c原创 2021-07-03 19:48:10 · 3568 阅读 · 5 评论 -
Verilog——串口数据接收(状态机)
串口协议简介串口时序图:串口发送端口空闲时为高;发送端口拉低表示数据传送即将开始;字节数据低位先发;字节发送后拉高,表示字节传送结束;字节位宽可以不为8 ;常用波特率有4800、9600、 1 15200等。串口接收模块RX为串口输入;data_out为接收到的串口字节(8位);每接收完成一个字节,en_data_out就产生一个同步脉冲;用户见到en_data_out即可收数;波特率为4800,系统时钟频率24MHz。串口数据接收空闲识别:一直为1原创 2021-07-03 21:46:11 · 4328 阅读 · 2 评论 -
Verilog——串口数据发送(状态机)
串口发送模块:TX为串口输出端口;rdy为空闲标志,字节发送时rdy为高;data_in为准备发送的字节;en_data_in为字节发送使能端口,高使能;发送波特率4800,系统时钟频率24MHz。状态规划:Verilog代码:`timescale 1ns/10psmodule UART_TXer( clk, res, data_in, en_data_in, TX, rdy .原创 2021-07-04 19:46:26 · 2437 阅读 · 5 评论 -
Verilog——串口指令处理器(状态机)
串口原创 2021-07-04 21:32:31 · 1397 阅读 · 2 评论