牛客网刷题记录(3)组合逻辑
VL11 4位数值比较器电路:某4位数值比较器的功能表如下。
请用Verilog语言采用门级描述方式,实现此4位数值比较器
assign Y2 = A[3]>B[3]?1:
(A[3]!=B[3]?0:
(A[2]>B[2]?1:
(A[2]!=B[2]?0:
(A[1]>B[1]?1:
(A[1]!=B[1]?0:
(A[0]>B[0]?1:0))))));
assign Y1 = A==B?1:0;
assign Y0 = ~Y2&~Y1;//当A=z或B=z时报错且存在行为级抽象
wire [3:0] y2, y1, y0;
genvar gen;
for(gen = 4; gen > 0; gen = gen - 1 ) begin
compare compare1(
.a (A[gen-1]),
.b (B[gen-1]),
.y2 (y2[gen-1]),
.y1 (y1[gen-1]),
.y0 (y0[gen-1])
);
end
assign Y2 = y2[3] | y1[3]&y2[2] | y1[3]&y1[2]&y2[1] | y1[3]&y1[2]&y1[1]&y2[0];
assign Y0 = y0[3] | y1[3]&y0[2] | y1[3]&y1[2]&y0[1] | y1[3]&y1[2]&y1[1]&y0[0];
assign Y1 = y1[3]&y1[2]&y1[1]&y1[0];//一位比较器
module compare(
input a,
input b,
output y2, //a>b
output y1, //a=b
output y0 //a<b
);
assign y2 = a&(~b);
assign y1 = ~(a^b);
assign y0 = (~a)&b;
endmodule //根据参考答案编写
VL12 4bit超前进位加法器电路:
4bit超前进位加法器的逻辑表达式如下:
中间变量Gi=AiBi,Pi=Ai⊕BiG_i=A_i B_i, P_i=A_i⊕B_iGi=AiBi,Pi=Ai⊕Bi
和:Si=Pi⊕Ci−1S_i=P_i⊕C_{i-1}Si=Pi⊕Ci−1,进位:Ci=Gi+PiCi−1C_i=G_i+P_i C_{i-1}Ci=Gi+PiCi−1
请用Verilog语言采用门级描述方式,实现此4bit超前进位加法器,接口电路如下
wire [3:0] p,g;
wire c3, c2, c1, c0;
genvar gen;
for(gen = 4; gen >0; gen = gen - 1) begin
pg_unit pg_1(
.a (A_in[gen-1]),
.b (B_in[gen-1]),
.p (p[gen-1]),
.g (g[gen-1])
);
end
assign c3 = g[3] | p[3]&g[2] | p[3]&p[2]&g[1] | p[3]&p[2]&p[1]&g[0] | p[3]&p[2]&p[1]&p[0]&C_1;
assign c2 = g[2] | p[3]&p[2]&g[1] | p[3]&p[2]&p[1]&g[0] | p[3]&p[2]&p[1]&p[0]&C_1;
assign c1 = g[1] | p[3]&p[2]&p[1]&g[0] | p[3]&p[2]&p[1]&p[0]&C_1;
assign c0 = g[0] | p[3]&p[2]&p[1]&p[0]&C_1;
assign CO = c3;
assign S[0] = p[0]^C_1;
assign S[1] = p[1]^c0;
assign S[2] = p[2]^c1;
assign S[3] = p[3]^c2;module pg_unit(
input a,
input b,
output p,
output g
);
assign p = a^b;
assign g = a&b;
endmodule //参考《数字逻辑设计与计算机组成》p75-76
VL13 优先编码器电路①:下表是某优先编码器的真值表。
①请用Verilog实现此优先编码器
always @(*)begin
casex(I_n)
9'b111111111: Y_n = 4'b1111;
9'b0xxxxxxxx: Y_n = 4'b0110;
9'b10xxxxxxx: Y_n = 4'b0111;
9'b110xxxxxx: Y_n = 4'b1000;
9'b1110xxxxx: Y_n = 4'b1001;
9'b11110xxxx: Y_n = 4'b1010;
9'b111110xxx: Y_n = 4'b1011;
9'b1111110xx: Y_n = 4'b1100;
9'b11111110x: Y_n = 4'b1101;
9'b111111110: Y_n = 4'b1110;
default: Y_n = 4'b1111;
endcase
end
VL14 用优先编码器①实现键盘编码电路:
请使用优先编码器①实现键盘编码电路,可添加并例化题目中已给出的优先编码器代码。
10个按键分别对应十进制数0-9,按键9的优先级别最高;按键悬空时,按键输出高电平,按键按下时,按键输出低电平;键盘编码电路的输出是8421BCD码。
要求:键盘编码电路要有工作状态标志,以区分没有按键按下和按键0按下两种情况。
优先编码器真值表如下图:
主要理解“没有按键按下”与“按键0按下”对应的状态:
wire [3:0] L_n;
encoder_0 encode(
.I_n (S_n[9:1]),
.Y_n (L_n)
);
assign L = ~L_n;
assign GS = ~(S_n[0] & L_n[0] & L_n[1] & L_n[2] & L_n[2]); //参考答案
VL15 优先编码器Ⅰ:
下表是8线-3线优先编码器Ⅰ的功能表。
①请根据该功能表,用Verilog实现该优先编码器Ⅰ。参考牛客网
reg [2:0] y;
reg gs, eo;
always @(*)begin
if(~EI)begin
y <= 3'b0;
gs <= 0;
eo <= 0;
end
else begin
casex(I)
8'b00000001: y <= 3'd0;
8'b0000001x: y <= 3'd1;
8'b000001xx: y <= 3'd2;
8'b00001xxx: y <= 3'd3;
8'b0001xxxx: y <= 3'd4;
8'b001xxxxx: y <= 3'd5;
8'b01xxxxxx: y <= 3'd6;
8'b1xxxxxxx: y <= 3'd7;
default: y <= 3'd0;
endcase
gs <= I[0]|I[1]|I[2]|I[3]|I[4]|I[5]|I[6]|I[7];
eo <= ~gs;
end
end
assign Y = y;
assign GS = gs;
assign EO = eo;
assign Y[2] = EI & (I[7] | I[6] | I[5] | I[4]);
assign Y[1] = EI & (I[7] | I[6] | ~I[5]&~I[4]&I[3] | ~I[5]&~I[4]&I[2]);
assign Y[0] = EI & (I[7] | ~I[6]&I[5] | ~I[6]&~I[4]&I[3] | ~I[6]&~I[4]&~I[2]&I[1]);
assign GS = EI&(|I);
assign EO = EI&(~GS);//组合逻辑
牛客网刷题记录(3)组合逻辑相关推荐
- 牛客网刷题记录 || 结构体和类
这是牛客网刷题记录专栏第五篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...
- 牛客网刷题记录 || 循环
这是牛客网刷题记录专栏第七篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...
- 牛客网刷题记录 || 第一番
- 牛客网刷题之SQL篇:非技术快速入门39T
导航 前序 一.简单的关键字练习 1-10 二.知识点复习之 ==运算符== 1.算数运算符 2.比较运算符 3.逻辑运算符 4.位运算符 三.10-28T 0.简单题总结 1. SQL18 ==分组 ...
- 【牛客网刷题】中秋节前开启java专项练习错题总结第一天
[牛客网刷题]中秋节前开启java专项练习错题总结第一天 概述 写在前面 错题分析 值得记录的错题 总结 写在最后 概述 还有十几天就到中秋节了,从此又老了一岁,也多了一年的知识积累.对于这样一个特殊 ...
- 2023年大年初一 —— 牛客网刷题经验分享~
2023年大年初一 -- 牛客网刷题经验分享~
- 牛客网 刷题前的准备工作(输入 输出 如何接收?)
牛客网 刷题前的准备工作 牛客网 刷题前的准备工作 1. 数据读取接受问题 2.牛客刷题前的准备: 2.1. 弄清楚输入输出的行数关系 3.代码怎么写 3.1. 在牛客上测试自己的模板代码,是否能正确 ...
- verilog牛客网刷题代码汇总
verilog牛客网刷题代码汇总 作者:安静到无声 个人主页 作者简介:人工智能和硬件设计博士生.CSDN与阿里云开发者博客专家,多项比赛获奖者,发表SCI论文多篇. Thanks♪(・ω・)ノ 如果 ...
- 牛客网刷题 --- 输入输出数据处理
正确处理输入输出格式 常见的输入格式: 预先不输入数据的组数 - 直接读到文件结尾 预先输入数据的组数 - 读数据组数然后循环 只有一组数据 - 直接读数据 处理输出格式要注意细节,看题目的具体要求 ...
- 牛客网刷题-java
大部分解答为牛客网各位同学的精彩回答,本文只是选择一些互联网常考题目记录备忘. 1.一个类的构造器可以调用这个类中的其他构造器: this的作用其中一个就是在一个构造方法中调用另一个构造方法,格式为t ...
最新文章
- sim中do文件/memory(readmemb命令符)/移位编写
- maven 常用的插件
- oracle基本的查询语句,Oracle基本查询语句
- linux 未找到wifi适配器,无线 - 重新启动后找不到WI-FI适配器
- C语言佛,佛大c语言毕业前补考.doc
- OGC 开放地理信息系统协会
- 英语单词辨异 —— 容易理解错的单词
- 指令重排序导致的可见性问题
- 分块存储视图状态数据
- Newtonsoft.Json取json字符串中的值得用法 看红色的部分就可以了
- oracle安装sqluldr2,Oracle sqluldr2工具使用方法
- JAVA自行车类代码_你好 请问你还有 java Web编写的自行车租赁管理系统源代码么...
- Python flag用法
- 蓝桥杯-决赛B组第七届java
- 正则表达式regex(入门使用)
- 【JS】H5打开支付宝
- 解读SpanBERT:《Improving Pre-training by Representing and Predicting Spans》
- JavaWeb新闻项目(查询阅读主题维护)
- 从位图图像中读取2D纹理(C ++,OpenGL)
- 10.2.0.1到12.2.0.1数据库迁移expdp+dblink导入失败