首页 > 其他分享 >【HDLBits刷题日记】08 Karnaugh Map to Circuit

【HDLBits刷题日记】08 Karnaugh Map to Circuit

时间:2022-10-28 12:33:10浏览次数:54  
标签:Map Karnaugh 08 mux module output input assign out

Kmap1

化简卡诺图即可。

module top_module(
    input a,
    input b,
    input c,
    output out  ); 
    assign out=b|c|a;
endmodule

Kmap2

我是这样化简的。

module top_module(
    input a,
    input b,
    input c,
    input d,
    output out  ); 
    assign out=(~a&~d)|(~b&~c)|(a&~b&d)|(b&c&d);
endmodule

Kmap3

这里d代表的是无关项,要不要圈起来都可以。

module top_module(
    input a,
    input b,
    input c,
    input d,
    output out  ); 
    assign out=(~b&c)|(a&c)|(a&~d);
endmodule

Kmap4

这道题一眼看过去根本没办法化简,但是根据提示,改变一个输入值总会使输出反转,所以可以推断出a、b、c、d应该进行的是异或运算。

module top_module(
    input a,
    input b,
    input c,
    input d,
    output out  ); 
    assign out=a^b^c^d;
endmodule

Exams/ece241 2013 q2

 

 

 

 sop形式直接写就可以了,pos形式则需要sop形式使用摩根定理取反两次进行变换。

module top_module (
    input a,
    input b,
    input c,
    input d,
    output out_sop,
    output out_pos
); 
    assign out_sop=(c&d)|(~a&~b&c);
    assign out_pos=c&(~a|d)&(~b|d);

endmodule

Exams/m2014 q3

也是直接化简就可以了。

 

 

 

module top_module (
    input [4:1] x, 
    output f );
    assign f=(~x[1]&x[3])|(x[1]&x[2]&~x[3]);
endmodule

Exams/2012 q1g

化简的时候注意四个角。

 

 

 

module top_module (
    input [4:1] x,
    output f
); 
    assign f=(~x[2]&~x[4])|(~x[1]&x[3])|(x[2]&x[3]&x[4]);
endmodule

Exams/ece241 2014 q3

 

 

 

这里要使用一个4-to-1的数据选择器实现四输入的逻辑。

逻辑为:f=(~a&~b&~c&d) | (~a&~b&c&d) | (~a&~b&c&~d) | (a&b&c&d) | (a&~b&~c&~d) | (a&~b&c&~d);

当a、b为00时,选中mux_in[0],也就是说控制mux_in[0]就可以了。

module top_module (
    input c,
    input d,
    output [3:0] mux_in
); 
    assign mux_in[0]=(~c&~d)?1'b0:1'b1;
    assign mux_in[1]=1'b0;
    assign mux_in[2]=(~d)?1'b1:1'b0;
    assign mux_in[3]=(c&d)?1'b1:1'b0;

endmodule

我这里貌似还是用了逻辑门,不符合要求,答案的表达式更加简洁,可以参考一下。

module top_module (
    input c,
    input d,
    output [3:0] mux_in
);
    
    // After splitting the truth table into four columns,
    // the rest of this question involves implementing logic functions
    // using only multiplexers (no other gates).
    // I will use the conditional operator for each 2-to-1 mux: (s ? a : b)
    assign mux_in[0] = c ? 1 : d;          // 1 mux:   c|d
    assign mux_in[1] = 0;                  // No muxes:  0
    assign mux_in[2] = d ? 0 : 1;          // 1 mux:    ~d
    assign mux_in[3] = c ? d : 0;          // 1 mux:   c&d
    
endmodule

 

标签:Map,Karnaugh,08,mux,module,output,input,assign,out
From: https://www.cnblogs.com/magnolia666/p/16835698.html

相关文章

  • Java - Semaphore 与 Exchanger
    Semaphore 控制线程并发数量。内部维护一个等待队列,acquire使配额减1,release使配额加1。packageChapter01;importjava.util.concurrent.Semaphore;publicclass_01_Ru......
  • 汇编语言-8086指令(上)
    数据传送指令汇编语言中字母开头通常表示标识符(如常量、变量、标号),所以MASM规定十六进制数如果以字母开头需要添加前导0。当目的操作数是存储单元,而源操作数既可以是字又......
  • R语言的 pheatmap 热点图问题
    代码笔记library(psych)library(pheatmap)#以上导入包S9<-read.csv(file.choose())rownames(S9)=S9[,1]#将第一列转为列名S9<-S9[,2:11]#删除第一列S9<-data.mat......
  • 08JMETER之在JDBC元件中执行多条数据
    JDBC元件中执行多条数据 1.JDBCConnectionConfiguration中配置DatabaseURL时在URL后面添加?allowMultiQueries=true2.JDBCConnection Configurationupdate-Quer......
  • uva 10891
    A,B两人从序列两端轮流取数,每次可以取多个(甚至取完)分数为所取数字的和,假设两人足够聪明,求得分差 f[i][j]区间[i,j],先手取得最大得分转移到取完后对方的序列 f[i]......
  • Acwing 4708 . 立方体(三维bfs)
    https://www.acwing.com/problem/content/4711/题目没什么难度,但是就是三维有些东西不经常定义记不住。写个题解记录一下吧Acwing1096.地牢大师https://www.acwing.co......
  • nacos配置Map嵌套List数据
    nacos配置yaml文件,读取格式为Map<String,List<String>>数据:1、当数据不含有中文字符时,格式如下:test:map:key1:-value1-value2key2:-v......
  • Leetcode908思路
    为什么写这篇文章?相信不少人在看官方的leetcode题解的时候,都遇到了不少困难。leetcode官方的题解,省略了不少细节。导致在读的时候非常难懂。所以,我在这里写出我对官方答案......
  • luogu 1908 逆序对板子
     逆序对的本质是二维偏序 给第一维排序(输入时已排好),统计y(k)>=y(i)k<i的个数用树状数组维护y值前缀和,需要的时候直接查询该题需要离散化这个y,再作为树状数组......
  • dremio map 数据查询
    官方提供了具体的操作说明,可以很好的体验dremio对于map的使用,内容来自官方文档数据生成使用pyarrowimportpyarrowaspaimportpyarrow.parquetaspq......