数字逻辑---交通灯系统设计(HUST)
第1关:7段数码管驱动电路设计
如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!!
本关卡最终答案:下面是此关卡最终需要填写的真值表,只需填写数字0-9即可,其他数字(10-15)不用管。
实验内容
在 logisim 中打开实验资料包中的 RGLED.circ 文件,在数码管驱动子电路中实现对应功能。
注意利用“分析组合逻辑电路”功能。
设置好真值表后直接生成电路即可
其中LED引脚顺序:
电路引脚
信号 | 输入/输出 | 位宽 | 说明 |
X3~X0 | 输入 | 1 位 | 4位BCD码输入 |
Seg1~Seg7 | 输出 | 1 位 | 7位数码管驱动信号 |
子电路外观:
电路测试
完成实验后利用文本编辑工具打开 RGLED.circ 文件,将所有文字信息复制粘贴到 Educoder 平台代码区域,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试。
第2关:4位无符号比较器设计
如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!!
本关卡最终答案:方法1:采用真值表,此处由于篇幅有限,故只列出一部分,剩余部分相信大家都懂,依葫芦画瓢即可。
方法1:构建逻辑表达式。下面是构建的逻辑表达式,复制粘贴输入即可。
Great:X0 ~Y3 ~Y2 ~Y1 ~Y0 + X1 ~Y3 ~Y2 ~Y1 + X1 X0 ~Y3 ~Y2 ~Y0 + X2 ~Y3 ~Y2 + X2 X0 ~Y3 ~Y1 ~Y0 + X2 X1 ~Y3 ~Y1 + X2 X1 X0 ~Y3 ~Y0 + X3 ~Y3 + X3 X0 ~Y2 ~Y1 ~Y0 + X3 X1 ~Y2 ~Y1 + X3 X1 X0 ~Y2 ~Y0 + X3 X2 ~Y2 + X3 X2 X0 ~Y1 ~Y0 + X3 X2 X1 ~Y1 + X3 X2 X1 X0 ~Y0
Equal:~X3 ~X2 ~X1 ~X0 ~Y3 ~Y2 ~Y1 ~Y0 + ~X3 ~X2 ~X1 X0 ~Y3 ~Y2 ~Y1 Y0 + ~X3 ~X2 X1 ~X0 ~Y3 ~Y2 Y1 ~Y0 + ~X3 ~X2 X1 X0 ~Y3 ~Y2 Y1 Y0 + ~X3 X2 ~X1 ~X0 ~Y3 Y2 ~Y1 ~Y0 + ~X3 X2 ~X1 X0 ~Y3 Y2 ~Y1 Y0 + ~X3 X2 X1 ~X0 ~Y3 Y2 Y1 ~Y0 + ~X3 X2 X1 X0 ~Y3 Y2 Y1 Y0 + X3 ~X2 ~X1 ~X0 Y3 ~Y2 ~Y1 ~Y0 + X3 ~X2 ~X1 X0 Y3 ~Y2 ~Y1 Y0 + X3 ~X2 X1 ~X0 Y3 ~Y2 Y1 ~Y0 + X3 ~X2 X1 X0 Y3 ~Y2 Y1 Y0 + X3 X2 ~X1 ~X0 Y3 Y2 ~Y1 ~Y0 + X3 X2 ~X1 X0 Y3 Y2 ~Y1 Y0 + X3 X2 X1 ~X0 Y3 Y2 Y1 ~Y0 + X3 X2 X1 X0 Y3 Y2 Y1 Y0
Less:~X3 ~X2 ~X1 ~X0 Y0 + ~X3 ~X2 ~X1 Y1 + ~X3 ~X2 ~X0 Y1 Y0 + ~X3 ~X2 Y2 + ~X3 ~X1 ~X0 Y2 Y0 + ~X3 ~X1 Y2 Y1 + ~X3 ~X0 Y2 Y1 Y0 + ~X3 Y3 + ~X2 ~X1 ~X0 Y3 Y0 + ~X2 ~X1 Y3 Y1 + ~X2 ~X0 Y3 Y1 Y0 + ~X2 Y3 Y2 + ~X1 ~X0 Y3 Y2 Y0 + ~X1 Y3 Y2 Y1 + ~X0 Y3 Y2 Y1 Y0
实验内容:设计实现四位无符号比较器,该电路有8个输入。
实现方法:1.真值表表项256项,用真值表实现过于繁琐,且容易出错(其实我觉得用真值表也可以,看着是256项,其实有规律可言,我反正采用真值表的方法来做。你看那个表达式,那么长,稍微不注意就写错或写漏,不如采用傻瓜一点的方式,直接真值表来做。)
2.对于这类电路也可以通过构建逻辑表达式的方式实现,仔细思考四位无符号比较器的逻辑表达式,利用logisim自动生成电路功能自动生成该电路。
电路引脚
信号 | 输入/输出 | 位宽 | 说明 |
X3~X0 | 输入 | 1 位 | 4位输入X |
Y3~Y0 | 输入 | 1 位 | 4位输入Y |
Great | 输出 | 1 位 | X大于Y |
Equal | 输出 | 1 位 | X等于Y |
Less | 输出 | 1 位 | X小于Y |
子电路外观:
电路测试
完成实验后利用文本编辑工具打开 RGLED.circ 文件,将所有文字信息复制粘贴到 Educoder 平台代码区域,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试
第3关:8位无符号比较器设计
如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!!
本关卡最终答案:此关在上一关已经做出来的情况下,简直小菜一碟好吧。话不多说,直接上答案。(需注意图中分线器端口对应数字,自上而下3210,3210,3210,3210。)
实验内容:利用已经设计完成的四位无符号比较器构建8位无符号比较器。
电路框架
电路引脚
信号 | 输入/输出 | 位宽 | 说明 |
X | 输入 | 8 位 | 输入X |
Y | 输入 | 8 位 | 输入Y |
Great | 输出 | 1 位 | X大于Y |
Equal | 输出 | 1 位 | X等于Y |
Less | 输出 | 1 位 | X小于Y |
子电路外观:
电路测试
完成实验后利用文本编辑工具打开 RGLED.circ 文件,将所有文字信息复制粘贴到 Educoder 平台代码区域,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试。
第4关:1位2路选择器设计
如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!!
本关卡最终答案:此关较简单,直接上图!!!
实验内容
利用基本逻辑门构成1位的2路选择器。
电路框架
电路引脚
信号 | 输入/输出 | 位宽 | 说明 |
X0 | 输入 | 1 位 | 2路输入之一路 |
X1 | 输入 | 1 位 | 2路输入之一路 |
Sel | 输入 | 1 位 | 选择控制端 |
Out | 输出 | 1 位 | Out=(Sel==0)?X0:X1; |
子电路外观:
请勿修改子电路外观,包括引脚位置,否则无法自动测试。
电路测试
完成实验后利用文本编辑工具打开 RGLED.circ 文件,将所有文字信息复制粘贴到 Educoder 平台代码区域,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试。
第5关:8位2路选择器设计
如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!!
本关卡最终答案:(此关在上一关已经做出来的情况下,简直小菜一碟,此关需注意Sel处的分线器的位宽和端口数)
实验内容
利用一位的2路选择器构建8位的2路选择器,请认真思考如何进行电路并发,如何构建电路绘图最简单。
电路框架
电路引脚
信号 | 输入/输出 | 位宽 | 说明 |
X0 | 输入 | 8 位 | 2路输入之一路 |
X1 | 输入 | 8 位 | 2路输入之一路 |
Sel | 输入 | 1 位 | 选择控制端 |
Out | 输出 | 8 位 | Out=(Sel==0)?X0:X1; |
子电路外观:
请勿修改子电路外观,包括引脚位置,否则无法自动测试。
电路测试
完成实验后利用文本编辑工具打开 RGLED.circ 文件,将所有文字信息复制粘贴到 Educoder 平台代码区域,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试。
第6关:双向BCD计数器状态机设计
如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!!
本关卡最终答案:懒得用Excel表演示了,直接上真值表,相信大家都懂。
实验内容
设计BCD双向计数器的状态机(即状态转换组合逻辑)。
实验步骤
1、完成状态转换表,具体见EXCEL文件BCD双向计数逻辑自动生成.xlsx
2、自动生成次态输出逻辑表达式
3、在logisim中自动生成电路
电路引脚
信号 | 输入/输出 | 位宽 | 说明 |
S3~S0 | 输入 | 4 位 | 当前状态S |
Mode | 输入 | 1 位 | Mode=0正向计数,Mode=1反向计数 |
NS3~NS0 | 输出 | 4 位 | 次态NextState,NS=S+1 或 NS=S-1 |
子电路外观:
请勿修改子电路外观,包括引脚位置,否则无法自动测试。
电路测试
完成实验后利用文本编辑工具打开 RGLED.circ 文件,将所有文字信息复制粘贴到 Educoder 平台代码区域,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试。
第7关:双向BCD计数器输出函数设计
如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!!
本关卡最终答案:此关看清题意就很简单,只有0的反向计数和9的正向计数的Cout为1,其他均
为0,且只需管数字0-9的即可,10-15的不用管。
实验内容
设计BCD双向计数器的输出函数,生成计数器的进位借位信号,该输出信号与状态和输入信号有关(Mealy型)。
电路引脚
信号 | 输入/输出 | 位宽 | 说明 |
S3~S0 | 输入 | 4 位 | 当前状态S |
Mode | 输入 | 1 位 | Mode=0正向计数,Mode=1反向计数 |
Cout | 输出 | 1 位 | 进位/借位输出,正向计数到9,反向计数到0时输出为1 |
子电路外观:
请勿修改子电路外观,包括引脚位置,否则无法自动测试。
电路测试
完成实验后利用文本编辑工具打开 RGLED.circ 文件,将所有文字信息复制粘贴到 Educoder 平台代码区域,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试。
第8关:双向BCD计数器设计
如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!!
本关卡最终答案:看图看图。
实验内容
利用已经设计完成的BCD双向计数器的状态机、输出函数,采用D触发器构建最终的双向BCD计数器,该计数器支持异步预置功能,当预置控制位为1,直接将Din数据写入触发器中。
电路框架
与第1关相同,子电路:BCD双向计数器(可异步置位) 请使用Logisim华科改良版完成实验。
电路引脚
信号 | 输入/输出 | 位宽 | 说明 |
CLK | 输入 | 1 位 | 时钟输入 |
En | 输入 | 1 位 | 使能信号,为1时根据Mode位进行计数 |
Mode | 输入 | 1 位 | Mode=0正向计数,Mode=1反向计数 |
PreSet | 输入 | 1 位 | 预置控制端,为1时异步写入Din |
Din | 输入 | 4 位 | 计数器预置数据 |
Q | 输出 | 4 位 | 计数器计数输出 |
Cout | 输出 | 1 位 | 进位借位输出,正向计数到9,反向计数到0时输出为1 |
子电路外观:
请勿修改子电路外观,包括引脚位置,否则无法自动测试。
电路测试
完成实验后利用文本编辑工具打开 RGLED.circ 文件,将所有文字信息复制粘贴到 Educoder 平台代码区域,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试。
第9关:双位BCD双向计数器设计
如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!!
本关卡最终答案:懒得细讲,上一关做出来,这关很简单,看图看图。
实验内容
利用已经设计完成的BCD双向计数器,级联构建双位十进制双向计数器。
电路框架
与第1关相同,子电路:双位十进制双向计数器 请使用Logisim华科改良版完成实验。
电路引脚
信号 | 输入/输出 | 位宽 | 说明 |
CLK | 输入 | 1 位 | 时钟输入 |
En | 输入 | 1 位 | 使能信号,为1时根据Mode位进行计数 |
Mode | 输入 | 1 位 | Mode=0正向计数,Mode=1反向计数 |
PreSet | 输入 | 1 位 | 预置控制端,为1时异步写入Din |
Din | 输入 | 8 位 | 计数器预置数据 |
Q | 输出 | 8 位 | 计数器计数输出 |
Cout | 输出 | 1 位 | 进位借位输出,正向计数到99,反向计数到00时输出为1 |
子电路外观:
请勿修改子电路外观,包括引脚位置,否则无法自动测试。
电路测试
完成实验后利用文本编辑工具打开 RGLED.circ 文件,将所有文字信息复制粘贴到 Educoder 平台代码区域,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试。
第10关:交通灯核心状态机设计
如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!!
本关卡最终答案:将下面逻辑表达式复制粘贴输入即可,懂?
N2:~S2 EMERG + ~S1 ~S0 EMERG
N1:~S2 ~S1 S0 T2 ~EMERG + ~S2 S1 ~S0 ~EMERG + ~S2 S1 ~T4 ~EMERG
N0:~S2 ~S1 ~S0 T1 ~EMERG + ~S2 ~S1 S0 ~T2 ~EMERG + ~S2 S1 ~S0 T3 ~EMERG + ~S2 S1 S0 ~T4 ~EMERG
实验内容
设计交通灯控制系统核心状态机(即状态转换组合逻辑)。状态机行为如下图所示。 请注意识别隐含的状态转换条件以及状态维持的条件!! 状态下标即为状态编码。
该交通灯实现主道和辅道双向控制。 S0状态:主道绿灯、辅道红灯 S1状态:主道黄灯、辅道红灯 S2状态:主道红灯、辅道绿灯 S3状态:主道红灯、辅道黄灯 S4状态:主道红灯、辅道红灯 各状态切换条件为T1~T4和Emerg,具体见各引脚说明
实验步骤
1、完成状态转换表,具体见EXCEL文件交通灯控制系统状态机逻辑自动生成.xlsx
2、自动生成次态输出逻辑表达式
3、在logisim中自动生成电路
电路框架
与第1关相同,子电路:红绿灯状态机(自动生成)
请使用Logisim华科改良版完成实验。
电路引脚
信号 | 输入/输出 | 位宽 | 说明 |
S2~S0 | 输入 | 3 位 | 当前状态S |
T1 | 输入 | 1 位 | 主道绿灯计时完成信号T1 |
T2 | 输入 | 1 位 | 主道黄灯计时完成信号T2 |
T3 | 输入 | 1 位 | 辅道绿灯计时完成信号T3 |
T4 | 输入 | 1 位 | 辅道黄灯计时完成信号T4 |
Emerg | 输入 | 1 位 | 紧急开关输入,开启时双向红灯 |
NS2~NS0 | 输出 | 3 位 | 次态输出NS |
子电路外观:
请勿修改子电路外观,包括引脚位置,否则无法自动测试。
电路测试
完成实验后利用文本编辑工具打开 RGLED.circ 文件,将所有文字信息复制粘贴到 Educoder 平台代码区域,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试。
第11关:交通灯输出函数设计
如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!!
本关卡最终答案:真值表输入即可,只需管0-4的Pass1、Pass2, 数字5-9的不用管。
实验内容
设计交通灯控制系统状态输出函数,根据状态机的状态生成主道辅道红绿灯控制信号,以及当前道路通行情况。 Moore型输出,输出只与状态有关!
该交通灯实现主道和辅道双向控制。 S0状态:主道绿灯、辅道红灯 S1状态:主道黄灯、辅道红灯 S2状态:主道红灯、辅道绿灯 S3状态:主道红灯、辅道黄灯 S4状态:主道红灯、辅道红灯
电路框架
与第1关相同,子电路:红绿灯状态输出函数(自动生成)
请使用Logisim华科改良版完成实验。
电路引脚
信号 | 输入/输出 | 位宽 | 说明 |
S2~S0 | 输入 | 3 位 | 当前状态S |
R1 | 输出 | 1 位 | 主道红灯控制信号R1 |
Y1 | 输出 | 1 位 | 主道黄灯控制信号Y1 |
G1 | 输出 | 1 位 | 主道绿灯控制信号G1 |
R2 | 输出 | 1 位 | 辅道红灯控制信号R2 |
Y2 | 输出 | 1 位 | 辅道黄灯控制信号Y2 |
G2 | 输出 | 1 位 | 辅道绿灯控制信号G2 |
PASS1 | 输出 | 1 位 | 主道通行情况PASS1,为1表示当前主道通行,状态0,1时为1 |
PASS2 | 输出 | 1 位 | 主道通行情况PASS2,为1表示当前辅道通行,状态2,3时为1 |
子电路外观:
请勿修改子电路外观,包括引脚位置,否则无法自动测试。
电路测试
完成实验后利用文本编辑工具打开 RGLED.circ 文件,将所有文字信息复制粘贴到 Educoder 平台代码区域,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试。
第12关:交通灯系统设计
如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!!
本关卡最终答案:看图看图。
实验内容
基于已经设计完成交通灯控制系统和新状态机,状态输出函数,以及前面完成的组合逻辑电路:数码管驱动器、8位无符号比较器,8位多路选择器,双位十进制双向计数器,设计一个十字路口交通灯控制系统。 该系统主道辅道轮流通行,其中主道通行20s,然后辅道通行10s,依次循环。注意主道绿灯转红灯之前有3s的黄灯时间,同样辅道绿灯转黄灯之前也有3s的黄灯时间,倒计数时间应通过数码管部件进行显示。如果按下紧急按键,双向红灯,关闭紧急按键,则系统重新进入S0状态,也就是主道通行模式开始循环。
该交通灯实现主道和辅道双向控制。 S0状态:主道绿灯、辅道红灯 S1状态:主道黄灯、辅道红灯 S2状态:主道红灯、辅道绿灯 S3状态:主道红灯、辅道黄灯 S4状态:主道红灯、辅道红灯 各状态切换条件为T1~T4和Emerg,具体见各引脚说明
电路框架
与第1关相同,子电路:红绿灯
请使用Logisim华科改良版完成实验。
实验步骤
1.构建核心状态机数据通路,将状态寄存器,状态机,输出函数连接起来构成核心控制器系统,控制红绿灯信号。 2.分别构建主道和辅道的倒计时电路,利用已经设计好的双位十进制双向计数器构建倒计时电路,要求利用系统复位信号自动预置通行时间,利用设计好的8位无符号比较器比较计数器输出值生成计时完成信号T1,T2,T3,T4,注意黄灯应该保持3秒,也就是三个时钟节拍。注意非当前道通行时,当前倒计时电路应该预置为初始值,当前道通行时,当前倒计时电路开始倒计时。 3.构建倒计时电路显示模块,由于主道辅道显示时间一致,所以只保留一个显示模块,但显示模块要根据当前是主道通行还是辅道通行显示不同计数器的值,这里需要使用前面已经实现的多路选择器,和数码管驱动电路。 4.系统联调,时钟频率调整为4HZ,ctrl+k驱动,测试系统功能。
实际效果
电路引脚
信号 | 输入/输出 | 位宽 | 说明 |
Status | 输出 | 3 位 | 状态机当前状态 |
Emerg | 输入 | 1 位 | 自动测试系统生成的紧急控制信号,注意手动控制请使用左侧的拨码开关 |
Timer | 输出 | 3 位 | 状态机当前状态 |
RYG1 | 输出 | 3 位 | 主道红黄绿三灯控制信号RYG |
RYG2 | 输出 | 3 位 | 辅道红黄绿三灯控制信号RYG |
子电路外观:
请勿修改子电路外观,包括引脚位置,否则无法自动测试。
电路测试
完成实验后利用文本编辑工具打开 RGLED.circ 文件,将所有文字信息复制粘贴到 Educoder 平台代码区域,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试。