完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
测试代码: reg [11:0] cnt; always @(posedge clk) begin cnt <= cnt+'d1; end reg wea; reg wea_d1; reg wea_d2; always @(posedge clk) begin if (cnt == 'd3) wea <= 1'b1; else if (cnt == 'd8) wea <= 1'b0; wea_d1 <= wea; wea_d2 <= wea_d1; end reg [3:0] addra; reg [3:0] addrb; always @(posedge clk) begin if (wea) addra <= addra + 'd1; else addra <= 'd0; if (wea_d2) addrb <= addrb + 'd1; else addrb <= 'd0; end reg [15:0] dina; always @(posedge clk) begin if(wea) dina <= dina + 'd1; else dina <= 'd0; end wire [15:0] doutb; blk_mem blk_mem ( .clka(clk), .ena(1'b1), .wea(wea), .addra(addra), .dina(dina), .clkb(clk), .enb(1'b1), .addrb(addrb), .doutb(doutb) ); always @(posedge clk) begin case(doutb) 'd0,'d5,'d18: led <= ~led; 'd20: led <= 1'b1; default:led <= 1'b0; endcase end 1、16bit的dina信号由4个sliceM完成,占用每个slice的4个触发器 它们之间有白色信号相连 2、输出LED电路 前3个LUT的输入为doutb[15:0]和led,输出给后一个LUT。 虽然用了case语句,但是还是只用到了LUT和触发器以及它们之间的一些连线资源,像XOR和MUX等好像没用到。 3、wea电路 5个LUT实现 cnt[5,11,10,7,8,4]-->wea_i_5_n_0--> cnt[5,0,2,3,4,1] -->wea_i_4_n_0--> | cnt[8,6,9,10,11,7]-->wea_i_3_n_0--> |-->wea_i_1_n_0-->触发器-->wea(图中白线部分为wea_i_5_n_0) cnt[2,4,1,0,5,3] -->wea_i_2_n_0--> | wea_reg_n_0-->/ 4、12bit cnt累加电路 总共用到了3个sliceL中的1个LUT(最低位)和12个触发器 之间靠加法进位链路连接,下图是最低4位[3:0]的产生slice,白色线为进位信号。蓝色框图中的部分实现加法运算。 |
|
相关推荐
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1634 浏览 1 评论
1396 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1608 浏览 0 评论
937 浏览 0 评论
2404 浏览 0 评论
1498 浏览 38 评论
5696 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 19:08 , Processed in 0.505795 second(s), Total 49, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号