电路设计与实验仿真
1.开发流程:
如下图所示:
2.电路设计:
1.8-3线优先译码器的真值表
1.逻辑表达式
1.实现代码
a)采用行为级描述:
b)采用数据流描述:
c)采用门级描述
1.引脚约束:
3.实验仿真
我们将输入从00000000~1xxxxxxx依次改变,改变的周期为10ns,可以看到输出Y依次将其译码为{0,0,1,2,3,4,5,6,7},验证得到该仿真是正确的。
4. 附加实验:
实现代码(部分核心代码):
实验效果:
1.8-3线优先编码器:
2.文字显示:
实验问题与分析
1.开始仅能实现8-3线简单译码,而未能实现优先编码:
解:开始使用case语句如下:
可见,该代码为简单编码,但如果将低位的0改为x的话,则会显示生成比特流失败,最后改为使用if……else
if语句,成功实现。
2.附加实验中,七段数码管全黑,未实现实验效果。
解:开始时是引脚约束文件中,未将Clk与Nexys4上面的时钟clk所对应,添加引脚约束后仍不显示;
后来在网络上查询类似情况,问题为:文字显示器部分,分频的时钟周期一定要选择合适。如果时钟周期过快(接近FPGA板的时钟周期),有可能存在未显示的情况,猜测的原因是信号变化太快,数码管还未点亮信号就已经消失了。如果时钟周期过慢,则显示的数码管存在闪烁的情况,本次实验选择的分频时钟周期为1ms。修改代码后实现效果。
3.文字显示时,显示内容出错。
解:可知,我们使用的Nexys4,如果想让对应的数码管点亮,段码该位应为低电平,使用网络上对应的段码为高电平,取反修改后实验效果正确。