完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 此账号已注册 于 2015-8-8 21:04 编辑
作为初学者,今天编写了几个 底层的 .V 程序,然后又编写顶层的.v顶层文件,可是,总是找不到添加的方法, 百度了好久,也没找到,求助大神们,怎么添加? 我的意思是这样的 顶层调用底层 |
|
相关推荐
9个回答
|
|
我的意思是这样
|
|
|
|
你可以看一下Verilog数字系统设计教程,夏宇闻版,上面有提到,通过,.clk(clk)这样类似的方式,把底层文件添加到顶层文件上
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
顶层源代码: /*序列检测器verilog HDL源程序*/ module series_det(rstn,din,b);//模块定义,模块名为series_det,端口为rstn,din,b input rstn;//定义位长为1的输入端口rstn input [6:0]din;//定义位长为7的输入端口 din output b;//定义位长为1的输出端口b reg b;//设置端口类型为寄存器类型 parameter s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6;//定义常数参数,用以表征状态机的7个状态 reg [2:0]s;//状态标识位,选择3位寄存器表征不同的状态 always @(rstn)//always语句,只要事件触发一次,always就执行一次 case(s)//case语句,根据s的不同状态选择不同的语句执行位置 default://默认语句,一个case语句中至多有一个default语句 begin s<= s0;b<=0;end//默认返回s0状态 s0: if(din[0]) begin s<=s1;b<=0;end//if-else语句,din[0]为真时,令状态标识位s为s1状态, else begin s<=s0;b<=0;end //输出b为0;当din[0]为假(0)时,s转移至s0状态, s1: //输出b为0。过程中均采用非阻塞赋值方法。下同。 if(din[1]) begin s<=s2;b<=0;end else begin s<=s0;b<=0;end s2: if(din[2]) begin s<=s3;b<=0;end else begin s<=s0;b<=0;end s3: if(din[3]) begin s<=s3;b<=0;end else begin s<=s4;b<=0;end s4: if(din[4]) begin s<=s1;b<=0;end else begin s<=s5;b<=0;end s5: if(din[5]) begin s<=s6;b<=0;end else begin s<=s0;b<=0;end s6: if(din[6]) begin s<=s2;b<=0;end else begin s<=s0;b<=1;end endcase //case结束语句 endmodule //模块结束语句,必不可少 /*七段数码管程序*/ module seg7_lut(oSEG1, oSEG2, oSEG3, oSEG4, oSEG5, oSEG6, oSEG7, din);//定义模块,指定 input [6:0] din;//定义7位输入端口din //输入输出端口 output [6:0] oSEG1, oSEG2, oSEG3, oSEG4, oSEG5, oSEG6, oSEG7;//输出端口指定 reg [6:0] oSEG1, oSEG2, oSEG3, oSEG4, oSEG5, oSEG6, oSEG7;//输出端口为寄存器类型 always @(din) begin case(din[0]) //数码管显示。当输入din[0]为1是,执行第一条语句,令七段 1'h1:oSEG1=7'b1111001; //共阳极数码管显示数字“1”,否则显示“0”。下同。 1'h0:oSEG1=7'b1000000; endcase case(din[1]) 1'h1:oSEG1=7'b1111001; 1'h0:oSEG1=7'b1000000; endcase case(din[2]) 1'h1:oSEG1=7'b1111001; 1'h0:oSEG1=7'b1000000; endcase case(din[3]) 1'h1:oSEG1=7'b1111001; 1'h0:oSEG1=7'b1000000; endcase case(din[4]) 1'h1:oSEG1=7'b1111001; 1'h0:oSEG1=7'b1000000; endcase case(din[5]) 1'h1:oSEG1=7'b1111001; 1'h0:oSEG1=7'b1000000; endcase case(din[6]) 1'h1:oSEG1=7'b1111001; 1'h0:oSEG1=7'b1000000; endcase end endmodule 求问一下这个顶层怎么调用低层 |
|
|
|
每一个底层.v都是一个函数,有输出也有输入。就像C语言中调用函数一样,把底层的头文件,放到顶层里面,把输入输出跟顶层文件输入输出对应上,编译一下,就可以了。
|
|
|
|
直接在顶层文件里调用就行了啊,多看看书吧。
|
|
|
|
多看看基础语法再写代码吧
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1278 浏览 1 评论
助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4
1033 浏览 0 评论
2349 浏览 1 评论
2060 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
2317 浏览 0 评论
1850 浏览 49 评论
6003 浏览 113 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 14:22 , Processed in 0.783601 second(s), Total 88, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号