> 文档中心 > 【计组之EDA】学了EDA,这些基础verilog代码题你都会了叭

【计组之EDA】学了EDA,这些基础verilog代码题你都会了叭

目录:

  • 🌳🌳🌳前言
  • 🌵🌵🌵一、设计一个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)beginif (ount==8'b11111111) out=0;else out=out+1;endendmodule

上述代码的判断语句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;endcaseendendfunction

函数只有输入,且输出为函数名本身;不能输入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;endcaseendendtask

任务有输入、有输出,不能输入reg型

🍀🍀🍀三、试编写求补码的verilog程序,输入是带符号的8位二进制数。

计算识别数,默认其为带符号数

module test(in,out);input [7:0]in;output reg [7:0]out;always@(in) beginif(in[7]==0) out=in;//此句可改为:if(~in[7]) out=in; else out=((~in+1)|8'H80);//|8'H80,是让符号位再变为1endendmodule

🌻🌻🌻四、试编写两个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;endendfunction;always@(a1,a2)begincase({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负endcaseendendmodule

🌍🌍🌍五、写一个比较电路,当输入的一位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;endendmodule

注: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与计组哦!💕💕💕

请添加图片描述