当前位置: 首页 > article >正文

数字IC设计\FPGA 职位经典笔试面试整理--基础篇2

1. 卡诺图

逻辑函数表达式可以使用其最小项相加来表示,用所有的最小项可以转换为卡诺图进行逻辑项化简
卡诺图讲解资料1
卡诺图讲解资料2
卡诺图讲解资料3

  • 最小项的定义
    一个函数的某个乘积项包含了函数的全部变量,其中每个变量都以原变量或反变量的形式出现,且仅出现一次,则这个乘积项称为该函数的一个标准积项,通常称为最小项。
  • 表示方法
    通常使用 m i m_i mi 来表示最小项;把最小项中原变量记为1,反变量记为0,比如 A = 1 A=1 A=1 A ‾ = 0 \overline A=0 A=0

1.1 卡诺图的简介

  一种描述逻辑函数的特殊方格图方格图中,每一个方格代表逻辑函数的一个最小项,而且几何相邻(在几何位置上,上下或左右相邻)的小方格具有逻辑相邻性,即两相邻小方格所代表的最小项只有一个变量取值不同。有n个变量,其所有的最小项个数就有 2 n 2^n 2n,则卡诺图中就对应有这么多数量的小方格,每个小方格都满足相邻项的要求。

根据最小项: 确认变量的顺序,然后将卡诺图填0/1,填写示例如下:
在这里插入图片描述
根据逻辑函数填写卡诺图: m 指最小项,m0=0000 即表示 A ‾ B ‾ C ‾ D ‾ \overline A \overline B \overline C \overline D ABCD
在这里插入图片描述
在这里插入图片描述

1.2 卡诺图的运算

  两图之间的最小项进行逻辑运算即可。乘、加、异或都类似,卡诺图对应位置做逻辑运算即可
在这里插入图片描述

1.3 卡诺图的化简

  卡诺图相邻性的特点保证了几何相邻两方格所代表的最小项只有一个变量不同。因此,若相邻的方格都为1(简称1格)时,则对应的最小项就可以合并。合并的结果是消去这个不同的变量,只保留相同的变量。 卡诺圈只能圈偶数个1(2、4、8…),图形两边也算相邻,而且数字可以重复画圈。画好圈后看一个圈内几个变量的是否同时有 0,1的情况,如果有说明可以消除,剩下一直为1的为正变量,一直为0的为反变量。
在这里插入图片描述
例题: 比如下图中的 B是因为4个1的卡诺圈内A,C都有取0,1的情况,因此可以消除。只有B一直为1则化简后仅剩B。
在这里插入图片描述

2. 有限状态机

状态机,从细节出发(一段式、两段式、三段式,moore型、mealy型)
检测序列重叠和不重叠状态的区别:最后一位的数据是否为下一组序列的起始位
如在101011检测101,重叠检测输出两次高电平,不重叠仅一次。以下列三段式为例进行说明

parameter S0=4'b0001;
parameter S1=4'b0010;
parameter S2=4'b0100;
parameter S3=4'b1000; //独热码 定义状态机状态

reg [3:0] state;
reg [3:0] c_state,n_state;
always@(posedge clk or negedge rst_n)begin
    if(rst_n==1'b0)
	     c_state<=S0;
	 else 
	     c_state<=n_state;	
end
	
always@(c_state or din)begin // 状态转移
	     case(c_state)      
				S0:begin
				   if(din==1'b1) 
						n_state=S1;
					else
					    n_state=S0;
					end
				S1:begin
				   if(din==1'b0)
					    n_state=S2;
					else
					    n_state=S1;
					end
				S2:begin
				   if(din==1'b1)
					    n_state=S3;
					else
					    n_state=S0;
					end
				S3:begin // 不重叠检测,直接判断输入是不是新的1,不是则重新开始检测
				   if(din==1'b1)
					    n_state=S1;
					else 
					    n_state=S0;
					end
				/*S3:begin   //重叠检测,以上一个输入1做为起始判断当前输入,是0则直接S2,是1则当作起始位跳到S1
				   if(din==1'b1)
					    n_state=S1;
					else
					    n_state=S2;
					end*/
				default:n_state=S0;
			endcase							  		 		 		 
	  
end

always@(posedge clk or negedge rst_n)begin
   if(rst_n==1'b0)
	     out<=1'b0;
   else begin
		if(n_state== S3) //仅依靠当前状态判断进行输出判断
			out<=1'b1;
		else
			out<=1'b0;
   end
end

http://www.kler.cn/a/319986.html

相关文章:

  • Kotlin语言的数据库交互
  • Linux:认识Shell、Linux用户和权限
  • Android BottomNavigationView不加icon使text垂直居中,完美解决。
  • TensorFlow深度学习实战(5)——神经网络性能优化技术详解
  • 鸿蒙打包发布
  • 11-1.Android 项目结构 - androidTest 包与 test 包(单元测试与仪器化测试)
  • TCP/IP 协议栈
  • 第五届计算机科学与管理科技国际学术会议(ICCSMT 2024)
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-25
  • 【Hadoop】【vim编辑器】【~/.bashrc 文件】如何编辑
  • 计算机网络复习大纲
  • 二叉树的基本概念(下)
  • 技术成神之路:设计模式(十五)中介者模式
  • VulnHub-Bilu_b0x靶机笔记
  • 大数据新视界 --大数据大厂之HBase 在大数据存储中的应用与表结构设计
  • K8S精进之路-控制器StatefulSet有状态控制 -(2)
  • qmt量化交易策略小白学习笔记第67期【qmt编程之获取ETF申赎清单】
  • 封装一个vue3的文件上传组件(拖拽或点击选择文件)
  • C++ | Leetcode C++题解之第437题路径总和III
  • react + antDesign封装图片预览组件(支持多张图片)
  • 服务端的 Session 详解
  • 无人机避障——4D 毫米波雷达 SLAM篇(一)
  • 3D扫描建模能代替传统建模吗?
  • 大觅网之业务部署(Business deployment of Da Mi Network)
  • Python发送邮件教程:如何实现自动化发信?
  • (学习记录)使用HAL库 STM32CubeMX——spi(DMA)配置OLED