- 博客(185)
- 问答 (1)
- 收藏
- 关注
原创 逻辑运算的实现(汇总)
从卡诺图可以看出,当A = 1时,Y= B’;当A = 0时,Y= B。当 A = 0时,Y = B’;当A = 1时, Y = B。加上一个非门,两个mux可以实现异或。关键词,有1则1,有0则0。
2022-09-21 22:28:49 1081
原创 数字IC入门基础(汇总篇)
5)一致性验证(Formality)Synopsys的Formality。3)逻辑综合(DC)Synopsys的Design Compiler。3)时钟树综合 Synopsys的Physical Compiler。4)静态时序分析(PT)Synopsys的Prime Time。1)DFT Synopsys的DFT Compiler。6)版图物理验证 Synopsys的Hercules。2)布局规划 Synopsys的Astro。4)布线 Synopsys的Astro。2)功能仿真(VCS+Verdi)
2022-09-19 15:13:59 6236 1
原创 时钟有关概念汇总
时钟抖动,英文名叫做 Clock Jitter,是相对于理想时钟沿实际时钟存在不随时间积累的、时而超前、时而滞后的偏移称为时钟抖动(时钟脉冲宽度发生暂时变化,也就是 T cycle【时钟周期】 或大或小)。时序分析工具通过 Worst corner 来保证建立时间的时序,通过 Best corner 来保证保持时间的时序。时钟偏差, Clock Skew,是指同一个时钟域内的时钟信号到达数字电路各个部分(一般是指寄存器)所用时间的差异。建立时间:在时钟上升沿之前数据必须稳定的最短时间。
2022-09-19 12:00:40 963
原创 芯动力——硬件加速设计方法——学习笔记(1)
先加后选替换成先选后加,将加法器替换为选择器,节省了面积,但是控制通道的延迟增加。可是真正分析代码以后才明白,中间的选择器是为了保持之前的功能,很有必要。晶圆厂,无晶圆设计公司,EDA,设计服务,IP供应商,集成设计与制造。首先向邸志雄老师致谢,他的课讲得很好,本文只是他课程的学习笔记。适用于计数器的场景,等于运算符消耗的资源小于比较运算符。上面的图,初看可能感觉中间的选择器是多余的。使能信号只是使输出不再变化,时钟还是在变的。把延迟大的分支拿出来,放在靠近出口的位置。吧的信号来得晚,所以放在靠后的位置。
2022-09-19 00:03:22 800
原创 邸老师的时序分析笔记
若是向外部输出,输出的最大延时可以视为Tcomb(因为也是到达时间的一部分),此时不用考虑Tsu。若是向外部输出,输出的最小延时可以视为Tcomb(因为也是到达时间的一部分),此时不用考虑Thu。若是从外部输入而来,外部输入的最大值可以视为Tcomb(因为是到达时间的一部分)若是从外部输入而来,外部输入的最小值可以视为Tcomb(因为是到达时间的一部分)建立的数据是上一个时钟出来的,这个时钟的数据还没出来。这个时钟的数据,应该在上个时钟的数据保持完以后再变化。
2022-09-17 15:26:25 495
原创 低功耗学习记录
短路功耗(Internal Power ):CMOS在翻转过程中,PNMOS管同时导通小号的功耗(无效功耗)系统级,可以把数据从DDR放到SRAM,可以实现更低功耗。工艺越先进,电压越低,功耗也越低,时钟频率越来越高。DVS,DVFS,AVS,AVFS 动态电压调整。在漏和栅和衬底的三角区加绝缘介质来减小漏电流。翻转功耗:对负载电容进行充放电时消耗的功耗。I3 栅极漏电流,栅漏之间感应漏电流。后面讲的比较敷衍,也没有记下什么。工艺越先进,漏电流越大。
2022-09-15 16:40:37 668
原创 线性反馈移位寄存器的输出(未解出)
有几个寄存器,就是几级线性反馈移位寄存器一个n级的LFSR最多只能存储2^n-1种状态(这里是减去了LFSR中全为0的情况。因为当LFSR中只有000时,这是反馈函数反馈回的值也永远是0,输出序列将一直是0)一个n级LFSR的最大周期就是2n-1。我们把周期为2n-1的LFSR所生成的序列称为m序列。
2022-09-12 22:09:57 1602
原创 将for循环从c转成verilog
将下面C函数改写成Verilog/VHDL代码。既然由于时序产生问题,为何不用组合呢?脑子想出来的代码是这样的。改完以后,啥毛病没有。
2022-09-08 21:50:30 690
原创 使用3个寄存器产生011序列
据我理解,应该有万能的公式,但是我不会,就枚举了一下首先,如果只有一个非是不行的,那会产生000111的序列如果没有非的话,就是0序列如果全部都是非的话,也不行,那样就等效于一个非所以是两个非reg clk;reg rst_n;clk = 0;rst_n = 0;endq3
2022-09-08 19:31:55 215
原创 从电路设计的角度入门VerilogHDL——学习记录
互连(connectivity ): wire型变量描述各个模块之间的端口与网线连接关系。时间(time):定义了绝对和相对的时间度量,可综合操作符具有物理延迟。并发(concurrency):可以有效地描述并行的硬件系统。取值时,需要先将存储单元取到寄存器,再对具体的位进行操作。Cell的内部是Pin,外部连的都是net。对于LATCH,如果D有毛刺,那么Q也有。两个加法一个选择与两个选择一个加法。延时在仿真时有效,逻辑综合时忽略掉。parameter最好给定位宽。例化的称为Cell(UX)
2022-09-02 12:09:16 296
原创 AHB与APB的接口 学习记录
如果数据总线在读取传输的设置周期中处于三态,并且每当总线处于空闲状态时,则在数据的不同驱动器之间总是发生整个时钟周期的转换。对于写入传输的突发,由于桥接器将在每次传输的设置周期中驱动数据,因此不存在周转,但这是完全可以接受的,因为桥接器是用于写入传输的数据总线的唯一驱动器,因此不需要周转期。事实上,在基于处理器的设计中,写后读并不经常发生,因为处理器将在两次传输之间执行指令提取,并且指令存储器不太可能驻留在APB上。桥接器负责对传输的地址和数据进行采样,然后在APB上的写传输期间保持这些值。...
2022-08-29 18:26:50 650
原创 串行进位加法器与超前进位加法器 verilog
在vivado中被优化的不成样子,且vivado似乎不支持通过WIDTH的方式进行传参,但Modelsim支持的非常完美。
2022-08-07 10:55:27 1883
原创 手撕Verilog PWM呼吸灯
占空比从0增加到分频参数/(分频参数+1)pwm的频率通过parameter传递,对clk按(分频参数+1)进行分频,
2022-07-30 17:51:33 354
原创 vivado里那些看不懂的原语
遇到一段代码是Intel风格的,可以用xilinx的BUFG进行替代//BUFG分配时钟专用资源,指定信号走专门的时钟布线修改为布线时候报错具体原因未知,只能先把功能打通,所以把相关的部分注释掉。下面是收集的一些资料,来源都做了标注。...
2022-07-28 14:35:21 3865
原创 AMBA APB学习记录(AMBA 3/4)
APB自发布以来,已经经过了多个版本的迭代最初的版本已经过时,目前使用的是三个修订版本amba2版本定义的是最简单的apbamba3相对2添加了PREADY/PSLVERR信号amba4相对3添加了PPROT/PSTRB信号本文实现了amba3定义的apb,即带PREADY/PSLVERR信号AMBAAPB学习记录(AMBA2.0)......
2022-07-28 14:27:16 601
原创 AMBA APB学习记录(AMBA 2.0)
APB自发布以来,已经经过了多个版本的迭代最初的版本已经过时,目前使用的是三个修订版本amba2版本定义的是最简单的apbamba3相对2添加了PREADY/PSLVERR信号amba4相对3添加了PPROT/PSTRB信号本文实现了amba2定义的apb。............
2022-07-28 11:27:17 694
原创 数学推理题:张王李赵陈五对夫妇聚会,见面握手
7号和0没握,和自己的夫妻没握,和其他人都握了。所以,剩下的人中(654321),每个人至少握了2次(与8、7),只有夫妻可以握1次。6号和0/1、自己夫妻没握,和其他人都握了,所以剩下的人中(5432),每个人都至少握了3次(与8、7、6),只有夫妻可以只握2次。8号和四对夫妻都握了手,(76543210),所以其他四对夫妻至少握了1次,只有8的夫妻可以1次不握。可以得到,王太太的4和前面的数据吻合。6和2是夫妻,2握了8、7。7和1是夫妻,1握的是8。...
2022-07-26 23:28:36 16221
原创 vcs与verdi学习记录
在波形窗口对信号进行Drag,在代码窗口进行Drop,可实现波形信号在代码窗口中的定位。-y指定一个库文件目录,目录下的文件名和module名要一致,且要用+libext+来指定文件类型,这里的.v文件里面就只能放一个和文件名同名的module,VCS会来这个目录下找源代码中例化的但在源代码中找不到的module。-v指定一个.v格式的库文件,VCS会来这个文件中找源代码中例化的但在源代码中找不到的module,这里一个文件可以里面包含很多module。这里只是简单提及,避免混淆。...
2022-07-21 13:34:20 8794 1
原创 以SPI的仿真文件学习TB写法
例化和复位与时钟信号的产生都是老生常谈,主要看task的产生和调用,与结果的检验。最后的等待ready高电平没有看懂,可能是为了健壮性。中间的begin和end大胆猜测,不要也罢。task的调用格式类似与c语言中的带参函数。等待时钟边沿==(不知道为啥用下降沿)==定义了他上课,名字为spi_cmd。wait表示等待ready为高电平。等待下一个时钟沿后发送结束信号。带输入参数,写在begin前。#时间后面的分号可加可不加。判断数据是否与输入数据一致。发送开始信号和相应数据。定义错误标志并赋初值。...
2022-07-19 14:55:20 681 2
原创 AMBA3 AHB-Lite学习笔记
这里写自定义目录标题AHBsignalsMASTERHTRANSHSIZEHBRUSTDecoderHSELxSlave响应HREADYHRESPARBITERHBUSREQHLOCKxHGRANTxHMASTERHMASTERLOCKHSPLITreferenceAHBsignalsMASTERHTRANS00 闲置两次burst之间的无效,下一次换新的burst01 忙碌两次burst之间的无效,下一次为同样的burst10 非连续突发的第一次传输或单个传输。地址和控制信号与之
2022-05-20 15:50:00 2782
原创 手撕RAM(单端口,简单双端口,真双端口)
这里写自定义目录标题单端口rtlsim简单双端口rtlsim真双端口rtlsim单端口rtlmodule hand_ram_sp #( parameter DATAWIDTH =8 , parameter ADDRSIZE =8)( input clka , input ena , input wea , input [ADDRSIZE-1:0] addra , input [DATAWIDTH-1:0] dina , ou
2022-05-18 20:31:58 613
原创 一段式、两段式和三段式状态机
这里写自定义目录标题一段式两段式三段式这张图片是mealy型状态机的结构,Moore型类似,输出与输入无关。一段式module moduleName ( input clk, input rst_n, input in, output reg [3:0] out);localparam s1=4'd0, s2=4'd1, s3=4'd2, s4=4'd3, s5=4'd4;reg [3:0] cur_state;reg [3:0] next_state;always @(po
2022-05-13 21:44:41 866
转载 一个实例带你理解阻塞赋值与非阻塞赋值(转载)
一个实例带你理解阻塞赋值与非阻塞赋值 always @(*) #3 out1=in; always @(*) #3 out2<=in; always @(*) out3=#3 in; always @(*) out4<=#3 in; assign #3 out5=in;我们首先看第一个always块,当我们检测到in发生变化的时候,我们就会进入always块,进来之后第一件事就是延迟3个单位,然后再进行阻塞赋值。延时3个单位以后,in的值为1,此时ou
2022-05-13 20:18:52 469
转载 Verilog语法之六:阻塞赋值与非阻塞赋值(转载)
Verilog语法之六:阻塞赋值与非阻塞赋值在描述组合逻辑的always 块中用阻塞赋值,则综合成组合逻辑的电路结构。在描述时序逻辑的always 块中用非阻塞赋值,则综合成时序逻辑的电路结构。为什么一定要这样做呢?这是因为要使综合前仿真和综合后仿真一致的缘故。[例1]用阻塞赋值的反馈振荡器(不好的例子)module fbosc1 (y1, y2, clk, rst); output y1, y2; input clk, rst; reg y1, y2; always @(posedg
2022-05-13 20:11:38 511
原创 阻塞赋值与非阻塞赋值的思考与实践
这里写自定义目录标题示例阻塞赋值+阻塞赋值非阻塞赋值+阻塞赋值非阻塞赋值+非阻塞赋值阻塞赋值+非阻塞赋值示例阻塞赋值+阻塞赋值initialbegin forever #(PERIOD/2) clk=~clk;endinitialbegin #(PERIOD*8) in = 1; #(PERIOD/2) in = 0; #(PERIOD*4) in = 1; #(PERIOD/2) in = 0;end在85时刻,in由阻塞赋值给到了0,所以上升沿采集到的为0在
2022-05-13 17:21:27 289
原创 nmap学习记录(未完待续)
这里写自定义目录标题声明!学习内容一、端口查询reference声明!请勿从事违法行为!学习内容一、端口查询原理常规扫描nmap scanme.nmap.org指定DNSnmap -Pn scanme.nmap.org停止探测之前的ICMP请求?nmap.exe -Pn scanme.nmap.org设置端口范围nmap.exe -p 1-1000 scanme.nmap.org5. 端口状态查看帮助nmap -hE:\Pro
2022-05-02 19:52:45 1024
原创 Vivado综合的教训
这里写自定义目录标题前记综合后的资源利用率synth_1_synth_report_utilization_0[Common 17-1649][Place 30-494] The design is empty前记很长时间以来,我写的工程都是小规模的,综合时间大约5min以内(r7000p 2021),这次综合的时间是20min中,这是史无前例的,虽然我知道,综合时间这么长是因为我的HDL有问题。但是, 这个过程值得记录,用来后续的查阅。综合后的资源利用率synth_1_synth_report_
2022-04-30 21:34:28 6248 2
原创 Vivado远程编辑与下载
文章目录FPGA主机端比特流主机端FPGA主机端打开端口\Xilinx\Vivado\2018.3\bin\hw_server.bat主机端打开完成比特流主机端
2022-04-30 20:11:27 1611
原创 二进制有符号数补码计算器
这里写自定义目录标题起因运行结果Codeattention起因Modelsim中的结果是以十六进制有符号数的形式给出的,不方便观察,所以想把它转成十进制数,然而没有找到合适的工具,无奈自己用C语言写了一个。运行结果Code#include <stdio.h>#include <stdlib.h>#include <string.h>char* fun(char ch);char str1[] = "1234";int main(){ int
2022-04-29 10:09:09 4841
原创 Vivado使用Cordic IP计算e^ix(复e指数函数)
这里写自定义目录标题原理IP解析设置IPHDL CodeSimulationCode仿真reference原理根据欧拉公式e^(ix)=(cos x+isin x)IP解析1 选择功能为计算正余弦2 并行(面积和速度的平衡)3 流水线模式开到最大(不知道有啥用)4 有符号小数(整数宽度为2(里面应该包含了一位符号位))这个选项是默认的,而且我们用的是相位而不是坐标对,可以忽略这个选项5 相位格式(以弧度为单位还是以pi为单位,1位符号位,2位整数位和N-3位小数位的补码)不同的格
2022-04-25 19:03:39 2696 3
原创 Modelsim仿真VIvado遇到的问题
这里写自定义目录标题编译Vivado仿真库报错Warning: (vlog-159) Mode option -64 is not supported in this context and will be ignored.# ** Warning: (vsim-8683) Uninitialized out port /tb_ip_fft2/u_top/u_ip_fft/u_xfft_0/U0///(0) has no driver.# Block Memory Generator module tb_i
2022-04-08 18:59:38 5653
空空如也
如何用Python实现控制第三方应用?
2021-09-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人