软件:Quartus
语言:Verilog
代码功能:
堆栈寄存器设计
内容及要求:
模拟堆栈寄存器电路。
(1)深度12,数据宽度8比特。
(2)堆栈、弹栈有指示信号。
(3)使用实验室的开发箱或自备开发板完成设计。
(4)完成全部流程:设计规范文档、模块设计、代码输入、功能仿真、结果与综合、时序伤真、下载验证等。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. Testbench
6. 仿真图
部分代码展示:
//堆栈寄存器 module?stack(datain,?push,?pop,?reset,?clk,?stackfull,?dataout); ???input?[7:0]??datain;//堆栈输入数据 ???input????????push;//堆栈信号 ???input????????pop;//弹栈信号 ???input????????reset;//复位 ???input????????clk;//时钟 ???output???????stackfull;//堆栈满指示信号 ???output?[7:0]?dataout;//堆栈读出数据 ??? ???reg?[7:0]????dataout; ???integer??????i; ???reg?[7:0]????data[11:0];//深度12.数据位宽为8 ???reg?[11:0]???stackflag; ???assign?stackfull?=?stackflag[0];//堆栈满指示信号 ???wire?[1:0]????selfunction; ???assign?selfunction?=?{push,?pop};//将堆栈信号弹栈信号组成2bit信号 ??? ???always?@(posedge?clk?or?posedge?reset) ???begin if?(reset?==?1'b1)//复位 ??????begin ?????????stackflag?<=?{12{1'b0}}; ?????????dataout?<=?{8{1'b0}}; ?????????for?(i?=?0;?i?<=?11;?i?=?i?+?1) ????????????data[i]?<=?8'b00000000;////复位清零 ??????end ??????else? ?????????case?(selfunction) ????????????2'b10?://入栈信号 ???????????????if?(stackflag[0]?==?1'b0) ???????????????begin ??????????????????data[11]?<=?datain;//堆栈输入数据 ??????????????????stackflag?<=?{1'b1,?stackflag[11:1]};//右移,高位移入1 ??????????????????for?(i?=?0;?i?<=?10;?i?=?i?+?1) ?????????????????????data[i]?<=?data[i?+?1];//数据移位 ???????????????end ????????????2'b01?://出栈信号 ???????????????begin dataout?<=?data[11];//读出最外部数据 ??????????????????stackflag?<=?{stackflag[10:0],?1'b0};//左移,低位移入0 ??????????????????for?(i?=?11;?i?>=?1;?i?=?i?-?1) ?????????????????????data[i]?<=?data[i?-?1];////数据移位 ???????????????end ????????????default?: ???????????????; ?????????endcase ???end ??? endmodule
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=589
阅读全文