VL1 四选一多路器

四选一多路器_牛客题霸_牛客网

`timescale 1ns/1ns
module mux4_1(
input [1:0]d1,d2,d3,d0,
input [1:0]sel,
output wire [1:0]mux_out
);
//*************code***********////assign mux_out = (sel == 'd0)?d3:(sel == 'd1)?d2:(sel == 'd2)?d1:d0;reg [1:0] mux_out_reg ;always@(*)begincase(sel)2'd0: mux_out_reg = d3;2'd1: mux_out_reg = d2;2'd2: mux_out_reg = d1;2'd3: mux_out_reg = d0;default: mux_out_reg = d0;endcaseendassign mux_out = mux_out_reg;
//*************code***********//
endmodule

异步复位同步释放

异步复位同步释放,既能很快的检测到复位信号,不需要复位保持超过一个时钟周期,又能解决释放时的亚稳态问题(降低亚稳态发生的概率)

联发科数字IC简答题(9)——异步复位同步释放问题

//异步复位同步释放
module rst_sync(input clk,input rst_async_n,output rst_sync_n
);reg [1:0] sync_rst_n;always@(posedge clk or negedge rst_async_n)beginif(!rst_async_n)sync_rst_n <= 1'b0; //异步复位elsesync_rst_n <= {sync_rst_n[0],1'b1}; //同步释放
endassign rst_async_n = sync_rst_n[1];
endmodule

VL2 异步复位的串联T触发器

T触发器: 输入是1,输出翻转; 输入是0,输出保持;

`timescale 1ns/1ns
module Tff_2 (
input wire data, clk, rst,
output reg q
);
//*************code***********//
reg data1;always@(posedge clk or negedge rst)beginif(!rst)begindata1 <= 'd0; q     <= 'd0;end else beginif(data)data1 <= !data1;elsedata1 <= data1;if(data1)q    <= !q;elseq    <= q;end
end//*************code***********//
endmodule

VL3 奇偶校验

`timescale 1ns/1ns
module odd_sel(
input [31:0] bus,
input sel,//0奇1偶
output check
);
//*************code***********//
wire ji_check,ou_check;assign ji_check = !(^ bus);
assign ou_check = ^ bus;
assign check = sel ? ou_check : ji_check;//*************code***********//
endmodule

VL4 移位运算与乘法

注意这题input_grant是用来采样的。要用一个寄存器保持住再做乘法。

`timescale 1ns/1ns
module multi_sel(
input [7:0]d ,
input clk,
input rst,
output reg input_grant,
output reg [10:0]out
);
//*************code***********//
reg [1:0] cnt;
reg [7:0] din;
always@(posedge clk or negedge rst)beginif(!rst)cnt <= 'd0;elsecnt <= cnt + 1'b1;
endalways@(posedge clk or negedge rst)beginif(!rst)begininput_grant = 'd0;din <= 'd0;end else beginif(cnt == 'd0)begininput_grant <= 1'b1;din <= d;endelse begininput_grant <= 1'b0;din <= din;endend
endalways@(posedge clk or negedge rst)beginif(!rst)beginout <= 'd0;end else begincase(cnt)2'd0: out <= d;2'd1: out <= (din << 2) - din;2'd2: out <= (din << 3) - din; 2'd3: out <= din << 3;endcaseend
end
//*************code***********//
endmodule

VL5 位拆分与运算

输出又是wire 懒的改 直接把端口开成reg了

`timescale 1ns/1nsmodule data_cal(
input clk,
input rst,
input [15:0]d,
input [1:0]sel,output reg [4:0]out,
output reg validout
);
//*************code***********//
always@(posedge clk or negedge rst)beginif(!rst)beginvalidout <= 'd0;out <= 'd0;    end else begincase(sel)'d0:beginvalidout <= 'd0;out <= 'd0;end'd1:beginvalidout <= 'd1;out <= d[3:0] + d[7:4]; end'd2:beginvalidout <= 'd1;out <= d[3:0] + d[11:8];end'd3:beginvalidout <= 'd1;out <= d[3:0] + d[15:12];enddefault:beginvalidout <= 'd0;out <= 'd0;endendcase
end
end//*************code***********//
endmodule

VL6 多功能数据处理器

注意补位宽

`timescale 1ns/1ns
module data_select(input clk,input rst_n,input signed[7:0]a,input signed[7:0]b,input [1:0]select,output reg signed [8:0]c
);always@(posedge clk or negedge rst_n)beginif(!rst_n)c <= 'd0;else begincase(select)'d0: c <= a; 'd1: c <= b; 'd2: c <= {a[7],a} + {b[7],b}; 'd3: c <= {a[7],a} - {b[7],b}; default:c <= 'd0;endcaseend
end
endmodule

VL7 求两个数的差值

`timescale 1ns/1ns
module data_minus(input clk,input rst_n,input [7:0]a,input [7:0]b,output  reg [8:0]c
);always@(posedge clk or negedge rst_n)beginif(!rst_n)c <= 'd0;else beginif(a > b)c <= {1'b0,a} - {1'b0,b};else c <= {1'b0,b} - {1'b0,a};end
end
endmodule

VL8 使用generate…for语句简化代码

不要忘了generate begin后面有个标签

`timescale 1ns/1ns
module gen_for_module( input [7:0] data_in,output [7:0] data_out
);genvar i;
generatefor(i = 0;i < 8; i = i + 1'b1)begin:reverseassign data_out[i] = data_in[7 - i];end
endgenerate
endmodule

VL9 使用子模块实现三输入数的大小比较

这题不纠结了 我会用时序逻辑来做

至于为什么分两个module不对

需要调用3个模块,这里很多同学可能疑惑为什么用3个而不是2个。
第一个模块:比较 T 时刻的 a 和 b,T+1 时刻出来 tmp1; 第二个模块:比较 T 时刻的 a 和 c,T+1 时刻
出来 tmp2; 第三个模块:比较 T+1 时刻的 tmp1 和 tmp2,T+2 时刻出来 d;
如果只用2个子模块,那么 T 时刻比较 a 和 b 得到 tmp1,再比较 tmp1 和 c 的时候是 T+1 时刻的 c
和 T+1 时刻的 tmp1,而 tmp1 代表的是 T 时刻 a 和 b 的较小值,所以这时候比较的 T 时刻的 a、b
和 T+1 时刻的 c,显然不符合要求。

就是说要保持住同一时间的abc来比较

VL10 使用函数实现数据大小端转换

注意for循环里没有assign啊

`timescale 1ns/1ns
module function_mod(input clk,input rst_n,input [3:0]a,input [3:0]b,output [3:0]c,output [3:0]d
);function [3:0] inv;input [3:0] data_in;integer i;for(i = 0;i < 4;i = i + 1)begininv[i] = data_in[3-i]; end
endfunctionassign c = inv(a);
assign d = inv(b);
endmodule

牛客网刷题 入门篇 基础语法相关推荐

  1. 《牛客网刷题之零基础入门前端之JavaScript》

    目录 ES5 数据类型 基本数据类型检测 检测复杂数据类型 数据类型转换 运算符 阶乘 绝对值 幂 平方根 余数 数组求和 完全等同 或运算 且运算 字符串字符统计 流程控制 返回星期数 内置对象 从 ...

  2. 牛客网刷题之SQL篇:非技术快速入门39T

    导航 前序 一.简单的关键字练习 1-10 二.知识点复习之 ==运算符== 1.算数运算符 2.比较运算符 3.逻辑运算符 4.位运算符 三.10-28T 0.简单题总结 1. SQL18 ==分组 ...

  3. 牛客网刷题记录 || 结构体和类

    这是牛客网刷题记录专栏第五篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...

  4. 牛客网刷题记录 || 循环

    这是牛客网刷题记录专栏第七篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...

  5. verilog牛客网刷题代码汇总

    verilog牛客网刷题代码汇总 作者:安静到无声 个人主页 作者简介:人工智能和硬件设计博士生.CSDN与阿里云开发者博客专家,多项比赛获奖者,发表SCI论文多篇. Thanks♪(・ω・)ノ 如果 ...

  6. 2023年大年初一 —— 牛客网刷题经验分享~

    2023年大年初一 -- 牛客网刷题经验分享~

  7. 牛客网 刷题前的准备工作(输入 输出 如何接收?)

    牛客网 刷题前的准备工作 牛客网 刷题前的准备工作 1. 数据读取接受问题 2.牛客刷题前的准备: 2.1. 弄清楚输入输出的行数关系 3.代码怎么写 3.1. 在牛客上测试自己的模板代码,是否能正确 ...

  8. 【牛客网刷题】中秋节前开启java专项练习错题总结第一天

    [牛客网刷题]中秋节前开启java专项练习错题总结第一天 概述 写在前面 错题分析 值得记录的错题 总结 写在最后 概述 还有十几天就到中秋节了,从此又老了一岁,也多了一年的知识积累.对于这样一个特殊 ...

  9. 牛客网刷题 --- 输入输出数据处理

    正确处理输入输出格式 常见的输入格式: 预先不输入数据的组数 - 直接读到文件结尾 预先输入数据的组数 - 读数据组数然后循环 只有一组数据 - 直接读数据 处理输出格式要注意细节,看题目的具体要求 ...

最新文章

  1. MongoDB极简教程
  2. 缓存击穿!竟然不知道怎么写代码???
  3. Linux多线程总结
  4. 网络:TIME-WAIT
  5. c mysql批量添加数据类型_mybatis学习之路----mysql批量新增数据
  6. Focal Loss论文阅读笔记
  7. 实验报告:抽象数据类型的表现和实现
  8. 如何从需求文档中辨认客户(一)
  9. 又崩了?苹果发生大规模网络故障:多项服务受影响 目前已恢复
  10. Gitea Extension for Visual Studio V1.0.62 发布
  11. Android 科大讯飞语音识别(详细步骤+源码)
  12. 深入浅出学大数据(一)大数据发展历程及大数据的简单介绍
  13. 下载百度翻译英文读音
  14. 使用ViewPager和PhotoView实现图片浏览
  15. 戴尔_从偶像派到实力派【我身边的戴尔企业级解决方案】
  16. 使用Blender导出多个动画的GLTF模型
  17. 这些新规今起实施:侵犯民警执法权威或被追刑责
  18. 鸿蒙第3批升级名单,鸿蒙系统首批升级名单详细介绍
  19. 免费领取三个月苹果ARCADE订阅教程
  20. 图论 物联网_物联网工程题目 物联网在医疗领域的应用

热门文章

  1. python打造seo必备工具-自动查询排名
  2. 为什么HashMap线程不安全
  3. 音视频传输协议众多, 5G时代不同业务应该如何选择?
  4. 中国联通定位平台及其应用
  5. springboot二手书籍线上回收网站java ssm-0401u
  6. 基于微信小程序的旧书置换二手书交易系统的设计与实现#毕业设计
  7. android短信加密(发送加密短信,解密本地短信)
  8. IOS 之 NSArray 数组方法详解(3)
  9. zz .Net 实现游戏修改器
  10. DevExpress官方汉化文件对界面进行汉化的过程