概述
目录:
- ????????????前言
- ????????????一、设计一个8位计数器,每次时钟上升沿时计数加1,当计数器溢出时,自动从0开始重新计数。
- ????????????二、分别用任务和函数描述一个4选1多路选择器。
- ????????????1、函数
- ????????????2、任务
- ????????????三、试编写求补码的verilog程序,输入是带符号的8位二进制数。
- ????????????四、试编写两个4位二进制数相减的verilog程序。
- ????????????五、写一个比较电路,当输入的一位8421BCD码大于4时,输出为1,否则为0。试编写verilog程序。
- ❤️❤️❤️忙碌的敲代码也不要忘了浪漫鸭!
????????????前言
✨你好啊,我是“ 怪& ”,是一名在校大学生哦。
????主页链接:怪&的个人博客主页
☀️博文主更方向为:课程学习知识、作业题解、期末备考。随着专业的深入会越来越广哦…一起期待。
❤️一个“不想让我曾没有做好的也成为你的遗憾”的博主。
????很高兴与你相遇,一起加油!
????????????一、设计一个8位计数器,每次时钟上升沿时计数加1,当计数器溢出时,自动从0开始重新计数。
moudle count8(clk,out);
input clk;
output reg[7:0] out;
always @(posedge clk)
begin
if (out==8'b11111111) out=0;
else out=out+1;
end
endmodule
上述代码的判断语句
if (ount==8'b11111111) out=0; else out=out+1;
等价于out=out+1;
因为out=out+1;
out有八位,越位超出则不会显示第九位。
????????????二、分别用任务和函数描述一个4选1多路选择器。
模块化思想:任务、函数。
????????????1、函数
function max41;
input a1,a2,a3,a4;
input[1:0]s;
begin case(s)
2'b00 max41=a1;
2'b01 max41=a2;
2'b10 max41=a3;
2'b11 max41=a4;
endcase
end
endfunction
函数只有输入,且输出为函数名本身;不能输入reg型。
????????????2、任务
task max41;
input a1,a2,a3,a4;
output max41;
input[1:0]s;
begin case(s)
2'b00 max41=a1;
2'b01 max41=a2;
2'b10 max41=a3;
2'b11 max41=a4;
endcase
end
endtask
任务有输入、有输出,不能输入reg型
????????????三、试编写求补码的verilog程序,输入是带符号的8位二进制数。
计算识别数,默认其为带符号数
module test(in,out);
input [7:0]in;
output reg [7:0]out;
always @(in)
begin
if(in[7]==0) out=in; //此句可改为:if(~in[7]) out=in;
else out=((~in+1)|8'H80);//|8'H80,是让符号位再变为1
end
endmodule
????????????四、试编写两个4位二进制数相减的verilog程序。
module test(a1,a2,out);
input [3:0]a1,a2;
output reg [4:0]out;
function [3:0]abs;//取绝对值操作
input [3:0]a;
begin
if(~a[3]) abs=a;
else abs=~a+1;
end
endfunction;
always@(a1,a2)
begin
case({a1[3],a2[3]}) //此处加大括号是将两者合在一起
2'b00:out=a1-a2; //a1正,a2正
2'b01:out=a1+abs(a2); //a1正,a2负
2'b10:out=-(abs(a1)+a2); //a1负,a2正
2'b11:out=abs(a2)-abs(a1); //a1负,a2负
endcase
end
endmodule
????????????五、写一个比较电路,当输入的一位8421BCD码大于4时,输出为1,否则为0。试编写verilog程序。
module test(a,out);
input [3:0]test;
output out;
always @(a)
if(a<4) out=0;
else out=1;
end
endmodule
注:
if(a<4) out=0;
不能改为if(a-4<0) out=0;
例如a=1时:a-4表示为
0001
1的补码
+1100
-4的补码
=1101
1101的补码为1011(值为-3)计算机默认存的为补码,需转化为原码
但是 1101与0000比较,第一位(符号位)1>0,判断结果为1-4>0,导致出错。
❤️❤️❤️忙碌的敲代码也不要忘了浪漫鸭!
????要一起学好EDA与计组哦!????????????
最后
以上就是多情电灯胆为你收集整理的【计组之EDA】学了EDA,这些基础verilog代码题你都会了叭????????????前言????????????一、设计一个8位计数器,每次时钟上升沿时计数加1,当计数器溢出时,自动从0开始重新计数。????????????二、分别用任务和函数描述一个4选1多路选择器。????????????三、试编写求补码的verilog程序,输入是带符号的8位二进制数。????????????四、试编写两个4位二进制数相减的verilog程序。????????????五、写一个比较电路,当输入的一位8的全部内容,希望文章能够帮你解决【计组之EDA】学了EDA,这些基础verilog代码题你都会了叭????????????前言????????????一、设计一个8位计数器,每次时钟上升沿时计数加1,当计数器溢出时,自动从0开始重新计数。????????????二、分别用任务和函数描述一个4选1多路选择器。????????????三、试编写求补码的verilog程序,输入是带符号的8位二进制数。????????????四、试编写两个4位二进制数相减的verilog程序。????????????五、写一个比较电路,当输入的一位8所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复