veilog学习难点总结归纳
acmgotoac
这个作者很懒,什么都没留下…
展开
-
HDLBits学习笔记:Sequential Logic - Finite State Machine
119. Fsm1尽量用写时序电路,避免竞争冒险module top_module( input clk, input areset, // Asynchronous reset to state B input in, output reg out);// parameter A=0, B=1; reg state, next_state; always@(posedge clk or posedge areset)原创 2021-04-15 08:25:04 · 106 阅读 · 1 评论 -
HDLBits学习笔记:Sequential Logic
99. Four-bit binary counter没什么说的module top_module ( input clk, input reset, // Synchronous active-high reset output [3:0] q); initial q = 4'b0; always @(posedge clk) begin if(reset) q <= 4'h0; e原创 2021-04-08 22:49:52 · 401 阅读 · 0 评论 -
20210331HDLBits学习笔记:Squential Logic
DFF with asynchronous reset详细可看这篇分析总而言之:clk作为时钟信号不能出现在过程快内其它信号,posedge 对应if只能是判断高电平,相反只能判断低电平always敏感事件列表不能单双边沿同时存在module top_module ( input clk, input areset, // active high asynchronous reset input [7:0] d, output [7:0] q);原创 2021-03-31 21:16:11 · 1118 阅读 · 0 评论 -
20210330HDLBits学习笔记:Circuits - Combinational Logic
Ring or vibrate根据逻辑表达式得到:module top_module ( input ring, input vibrate_mode, output ringer, // Make sound output motor // Vibrate); assign ringer = ring & ~(vibrate_mode); assign motor = ring & vibrate_mode;原创 2021-03-30 20:49:41 · 90 阅读 · 0 评论 -
20210330HDLBits学习笔记:Veriliog Language - More Verilog Features
Popcount255always过程快中运用阻塞赋值语句可以实现顺序执行。module top_module( input [254:0] in, output reg [7:0] out ); integer i; always @(*) begin out = 8'd0;//初始化 for (i = 0; i < 255; i = i + 1)原创 2021-03-30 11:31:16 · 120 阅读 · 0 评论 -
20210330HDLBits学习笔记:Verilog Language - Procedures
priority encoder在case语句中,敏感表达式中与各项值之间的比较是一种全等比较,每一位都相同才认为匹配。Note: casez与casex语句是case语句的两种变体, 在写testbench时用到,属于不可综合的语句。在casez语句中,如果分支表达式某些位的值为高阻z,那么对这些位的比较就会忽略,不予考虑,而只关注其他位的比较结果。在casex语句中,则把这种处理方式进一步扩展到对x的处理,即如果比较双方有一方的某些位的值是z或x,那么这些位的比较就不予考虑。m原创 2021-03-30 09:42:30 · 436 阅读 · 0 评论 -
20210329HDLBits学习笔记:Verilog Language - Modules Hierarchy
Module cseladdTPmodule top_module( input [31:0] a, input [31:0] b, output [31:0] sum); wire sel; add16 a0(a[15:0], b[15:0], 1'b0, sum[15:0], sel); wire [15:0] sum0, sum1; wire cout0, cout1; add16 a1(a[31:16], b[31:16], 1'原创 2021-03-29 15:41:13 · 138 阅读 · 0 评论 -
20210329HDLBits学习笔记:Verilog language - vectors
vector reversal1:assign out[7:0] = in[0:7]; does not work because Verilog does not allow vector bit ordering to be flipped.因此只能想到按bit使用连接符module top_module( input [7:0] in, output [7:0] out); assign out = {in[0], in[1], in[2], in[3], in[4]原创 2021-03-29 09:56:12 · 179 阅读 · 0 评论 -
20210324Verilog学习笔记:全加器的几个实现方式
数据流建模module fulldaaer_behavior(ci, a, b, c, s); input ci, a, b; output c, s; assign c = ((a ^ b) & ci) | (a & b), s = (a ^ b ^ c);endmodule行为级建模module adder_beha(ci, a, b, s, c); input ci, a, b; output s, c;原创 2021-03-24 16:32:13 · 471 阅读 · 0 评论 -
20210324Verilog学习笔记:描述组合电路的四种方式比较:真值表、逻辑代数、结构描述、抽象描述
三输入,一输出,输入信号有两个以上高电平则输出为高电平真值表法:module desciption_realdata(a, b, c, out); input a, b, c; output out; reg out; always @(a, b, c) case ({a, b, c}) 3'b000: out <= 0; 3'b001: out <= 0;原创 2021-03-24 16:08:06 · 947 阅读 · 0 评论 -
20210324 Verilog学习笔记:结构型建模理解,以及与行为级建模的仿真比较
课本概念结构描述方式(结构级建模)就是将硬件描述成一个分级子模块系统(分级子模块互连网络)的一种描述方式。任何硬件电路在结构上都是由一级级不同层次的若干功能单元组成的,所以结构描述方式很适合用来对电路结构特点进行说明,也是“结构描述方式”的由来。以全加器电路为例:(数电中我们知道全加器是由两个半加器合并而来的)实验一:行为级建模组合电路的建模,先列真值表,后卡诺图化简,写出输出方程。(数电详细内容不再赘述)module fulldaaer_behavior(ci, a, b, c, s);原创 2021-03-24 11:05:05 · 1138 阅读 · 0 评论 -
20210323 Verilog学习笔记:过程赋值语句的阻塞和非阻塞语句的区分与实验
课本概念阻塞型"=":顺序块(begin-end)内的各条阻塞型语句顺序执行,并行块(fork-join)内的各条阻塞型语句并行执行,但不可综合。阻塞型赋值语句执行过程是:先计算右端赋值表达式的值,然后立即将结果赋值给左边变量,再执行下一条语句。非阻塞型"<="1.顺序块中非阻塞型语句的执行不会影响下一条语句的执行。2.遇到非阻塞型语句时,先计算右端表达式的值,等到仿真时间结束后将结果赋值给变量,即非阻塞型语句的赋值过程是其他普通操作结束后才执行的。实验1module block(原创 2021-03-23 21:06:53 · 354 阅读 · 0 评论