在Verilog语言中经常用到有限状态机,处理相对复杂的逻辑,设定好不同的状态,根据触发条件跳转到对应的状态,在不同的状态下进行相应的处理。
在程序中设计8位寄存器,①Idle状态下,判断shift_start是否为高,若高,则进入Start状态;
②在Start状态延迟100个周期,进入Run状态,进行移位处理;
第一种Melay状态机采用一段式写法,一个always语句中包括状态转移,状态转换台条件判断,数据输出;
第二种Moore状态机采用三段式写法,状态转移用一个always语句,判断状态转移的条件是组合逻辑,采用一个always语句,数据输出也是单独的always语句,直观清晰;
2025/3/11 13:18:12 1KB verilog ZYNQ7035 有限状态机
1
用verilog抑制蜂鸣器发声modulefp_verilog(out,clk);outputout;inputclk;reg[13:0]cn;regout;always@(posedgeclk)begincn<=cn+1'b1;if(cn==14'd12000)begincn<=14'd0;out<=~out;endendendmodule
2023/5/10 14:06:41 200B 蜂鸣器
1
很实用的Verilog实例!目录:王金明:《VerilogHDL程序设计教程》程序例子,带说明。
【例3.1】4位全加器【例3.2】4位计数器【例3.3】4位全加器的仿真程序【例3.4】4位计数器的仿真程序【例3.5】“与-或-非”门电路【例5.1】用case语句描述的4选1数据选择器【例5.2】同步置数、同步清零的计数器【例5.4】用initial过程语句对测试变量A、B、C赋值【例5.5】用begin-end串行块产生信号波形【例5.6】用fork-join并行块产生信号波形【例5.7】持续赋值方式定义的2选1多路选择器【例5.8】阻塞赋值方式定义的2选1多路选择器【例5.9】非阻塞赋值【例5.10】阻塞赋值【例5.11】模为60的BCD码加法计数器【例5.12】BCD码—七段数码管显示译码器【例5.13】用casez描述的数据选择器【例5.15】用for语句描述的七人投票表决器【例5.16】用for语句实现2个8位数相乘【例5.17】用repeat实现8位二进制数的乘法【例5.18】同一循环的不同实现方式【例5.19】使用了`include语句的16位加法器【例5.20】条件编译举例【例6.1】加法计数器中的进程【例6.2】任务举例【例6.3】测试程序【例6.4】函数【例6.5】用函数和case语句描述的编码器(不含优先顺序)【例6.6】阶乘运算函数【例6.7】测试程序【例6.8】顺序执行模块1【例6.9】顺序执行模块2【例6.10】并行执行模块1【例6.11】并行执行模块2【例7.1】调用门元件实现的4选1MUX【例7.2】用case语句描述的4选1MUX【例7.3】行为描述方式实现的4位计数器【例7.4】数据流方式描述的4选1MUX【例7.5】用条件运算符描述的4选1MUX【例7.6】门级结构描述的2选1MUX【例7.7】行为描述的2选1MUX【例7.8】数据流描述的2选1MUX【例7.9】调用门元件实现的1位半加器【例7.10】数据流方式描述的1位半加器【例7.11】采用行为描述的1位半加器【例7.12】采用行为描述的1位半加器【例7.13】调用门元件实现的1位全加器【例7.14】数据流描述的1位全加器【例7.15】1位全加器【例7.16】行为描述的1位全加器【例7.17】混合描述的1位全加器【例7.18】结构描述的4位级连全加器【例7.19】数据流描述的4位全加器【例7.20】行为描述的4位全加器【例8.1】$time与$realtime的区别【例8.2】$random函数的使用【例8.3】1位全加器进位输出UDP元件【例8.4】包含x态输入的1位全加器进位输出UDP元件【例8.5】用简缩符“?”表述的1位全加器进位输出UDP元件【例8.6】3选1多路选择器UDP元件【例8.7】电平敏感的1位数据锁存器UDP元件【例8.8】上升沿触发的D触发器UDP元件【例8.9】带异步置1和异步清零的上升沿触发的D触发器UDP元件【例8.12】延迟定义块举例【例8.13】激励波形的描述【例8.15】用always过程块产生两个时钟信号【例8.17】存储器在仿真程序中的使用【例8.18】8位乘法器的仿真程序【例8.19】8位加法器的仿真程序【例8.20】2选1多路选择器的仿真【例8.21】8位计数器的仿真【例9.1】基本门电路的几种描述方法【例9.2】用bufif1关键字描述的三态门【例9.3】用assign语句描述的三态门【例9.4】三态双向驱动器【例9.5】三态双向驱动器【例9.6】3-8译码器【例9.7】8-3优先编码器【例9.8】用函数定义的8-3优先编码器【例9.9】七段数码管译码器【例9.10】奇偶校验位产生器【例9.11】用if-else语句描述的4选1MUX【例9.12】用case语句描述的4选1MUX【例9.13】用组合电路实现的ROM【例9.14】基本D触发器【例9.15】带异步清0、异步置1的
2020/10/10 20:05:56 127KB Verilog 实例 经典
1
SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注。
目录如下:第一章SV环境构建常识 1 1.1数据类型 1 四、二值逻辑 4 定宽数组 9 foreach 13 动态数组 16 队列 19 关联数组 21 枚举类型 23 字符串 25 1.2过程块和方法 27 initial和always 30 function逻辑电路 33 task时序电路 35 动态静态变量 39 1.3设计例化和连接 45第二章验证的方法 393 动态仿真 395 静态检查 397 虚拟模型 403 硬件加速 405 效能验证 408 功能验证 410第三章SV组件实现 99 3.1接口 100 什么是interface 101 接口的优势 108 3.2采样和数据驱动 112 竞争问题 113 接口中的时序块clocking 123 利于clocking的驱动 133 3.3测试的开始和结束 136 仿真开始 139 program隐式结束 143 program显式结束 145 软件域program 147 3.4调试方法 150第四章验证的计划 166 4.1计划概述 166 4.2计划的内容 173 4.3计划的实现 185 4.4计划的进程评估 194第五章验证的管理 277 6.1验证的周期检查 277 6.2管理三要素 291 6.3验证的收敛 303 6.4问题追踪 314 6.5团队建设 321 6.6验证的专业化 330第六章验证平台的结构 48 2.1测试平台 49 2.2硬件设计描述 55 MCDF接口描述 58 MCDF接口时序 62 MCDF寄存器描述 65 2.3激励发生器 67 channelinitiator 72 registerinitiator 73 2.4监测器 74 2.5比较器 81 2.6验证结构 95第七章激励发生封装:类 209 5.1概述 209 5.2类的成员 233 5.3类的继承 245 三种类型权限protected/local/public 247 thissuper 253 成员覆盖 257 5.4句柄的使用 263 5.5包的使用 269第八章激励发生的随机化 340 7.1随机约束和分布 340 权重分布 353 条件约束 355 7.2约束块控制 358 7.3随机函数 366 7.4数组约束 373 7.5随机控制 388第九章线程与通信 432 9.1线程的使用 432 9.2线程的控制 441 三个fork...join 443 等待衍生线程 451 停止线程disable 451 9.3线程的通信 458第十章进程评估:覆盖率 495 10.1覆盖率类型 495 10.2功能覆盖策略 510 10.3覆盖组 516 10.4数据采样 524 10.5覆盖选项 544 10.6数据分析 550第十一章SV语言核心进阶 552 11.1类型转换 552 11.2虚方法 564 11.3对象拷贝 575 11.4回调函数 584 11.5参数化的类 590第十二章UVM简介 392 8.2UVM简介 414 8.3UVM组件 420 8.4UVM环境 425
2022/10/19 15:18:43 47.25MB systemverilog
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡