100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > CUMT学习日记——Verilog课程学习全记录

CUMT学习日记——Verilog课程学习全记录

时间:2022-06-04 00:28:51

相关推荐

CUMT学习日记——Verilog课程学习全记录

CUMT学习日记——Verilog课程学习全记录

系列第一篇 计算机网络复习

系列第二篇 计算机组成原理复习

系列第三篇 微机原理与接口技术复习

系列第四篇 计算机操作系统复习

系列第五篇 数据库原理复习

系列第六篇 数字系统设计基础(VHDL)复习

系列第七篇 单片机原理及应用复习

系列第八篇 信号与系统复习

系列第九篇 算法导论复习

系列第十篇 Verilog复习


文章目录

CUMT学习日记——Verilog课程学习全记录一、Verilog复习回忆二、笔记练习代码八位二进制加法器两位BCD码加法器parameter传参乘法器异步清零同步使能、置数带进位位十进制计数器十分频器五分频50%占空比异步置数异步清零右移移位寄存器写在最后

一、Verilog复习回忆

Verilog复习得很早,因为疫情,考试前一个月就复习完了,等真正考试要复习的时候相当于又重新学了一遍,在有VHDL的基础后学得很快,而且课程内容不多,只有20个课时,主要还是领着大家入门而已。刚考完试,但考题没有什么参考意义,因为做了比较全面的复习,考试的内容或多或少复习过,虽然也有一些遗憾,有些知识点不是很深刻,不过已经考完就不重要了。

考前复习编程题的时候是直接在QuartusII上编程的,这样复习很有效。

二、笔记

练习代码

八位二进制加法器

module kaoshi (input[7:0] a,input [7:0] b,input cin,output[7:0] dout,output cout);wire[8:0]data;assign data=a+b+cin;assign dout=data[7:0];assign cout=data[8];endmodule

两位BCD码加法器

module kaoshi (input[7:0]a,input[7:0]b,output reg[8:0]d);wire[4:0]DT0,DT1;reg s;assign DT0=a[3:0]+b[3:0];always@(DT0)beginif(DT0>=5'b01010) begin d[3:0]=DT0+'b0110;s=1'b1;endelse begin d[3:0]=DT0; s=1'b0;endendassign DT1=a[7:4]+b[7:4]+s;always@(DT1)beginif(DT1>=5'b01010) begin d[8:4]=DT1+'b0110;endelse begin d[8:4]=DT1; endendendmodule

parameter传参乘法器

module MUL #(parameter s)(output reg[2*s:1]R,input[s:1]A,input[s:1]B);reg [2*s:1]AT;reg [s:1]BT,CT;always@(A,B)beginR=0;AT={{s{1'b0}},A};BT=B;CT=s;for(CT=s;CT>0;CT=CT-1)beginif(BT[1]) R=R+AT;AT=AT<<1;BT=BT>>1;endendendmodulemodule kaoshi(output[15:0]dout,input[7:0]in1,input[7:0]in2);MUL #(.s(8)) U1(.R(dout),.A(in1),.B(in2));endmodule

异步清零同步使能、置数带进位位十进制计数器

module kaoshi(input clk,input rst,input en,input load,output reg cout,output[3:0]dout,input[3:0]data);reg[3:0]Q1;always@(posedge clk,negedge rst)beginif(!rst)Q1<=0;else if(en)beginif(load)Q1<=data;else if(Q1<9) Q1<=Q1+1;else Q1<=4'b0000;endendassign dout=Q1;always@(Q1)beginif(Q1==4'b1001)cout=1'b1;else cout=1'b0;endendmodule

十分频器

module kaoshi(input clk,output reg div);reg[3:0]cnt;always@(posedge clk)beginif(cnt==4)begin div<=~div;cnt<=1'b0;endelse cnt<=cnt+1;endendmodule

五分频50%占空比

module kaoshi(input clk,output div);reg[3:0]cnt1,cnt2;reg div1,div2;always@(posedge clk)beginif(cnt1==1)begin div1<=1'b1;cnt1<=cnt1+1'b1;endelse if(cnt1==4)begin div1<=1'b0;cnt1<='b0;endelse cnt1<=cnt1+1'b1;endalways@(negedge clk)beginif(cnt2==1)begin div2<=1'b1;cnt2<=cnt2+1'b1;endelse if(cnt2==4)begin div2<=1'b0;cnt2<='b0;endelse cnt2<=cnt2+1'b1;endassign div=div1&div2;endmodule

异步置数异步清零右移移位寄存器

module kaoshi (input clk,input load,input rst,input [7:0]data,output cout,output [7:0]dout);reg [7:0]Q;always@(posedge clk,negedge load,posedge rst)beginif(!load) Q<=data;else if(rst) Q<='b0;else begin Q<=(Q>>1);endendassign cout=Q[0];assign dout=Q;endmodule

写在最后

感觉fpga这条路很复杂啊,就现在这点东西实际上门都没入,不知道未来会干什么。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。